Articles of gcc

Linux上的_emit相当于什么?

我试图将在Visual Studio中编写的汇编代码移植到Linux上的GNU内联汇编中。 原始代码使用MSDN描述的_emit作为伪指令,并解释为: _emit伪指令类似于MASM的DB指令。 您可以使用_emit在当前文本段中的当前位置定义一个即时字节。 但是,_emit一次只能定义一个字节,只能在文本段中定义字节。 它使用与INT指令相同的语法。 我怎样才能在Linux上做同样的事情?

在共享库的构build选项中添加“-rpath,/ usr / lib”会导致段错误

我有一个你好世界计划。 #include <stdio.h> #include <stdlib.h> int main() { printf("hello world! \n"); return 0; } 我在链接阶段的程序-lmicroxml中添加-lmicroxml以链接到库libmicroxml.so 当我启动我的程序时,我得到了一个分段错误。 分段故障与libmicroxml.so的加载有关。 在我的helleo世界计划执行的strace之后: strace ./test execve("./test", ["./test"], [/* 11 vars */]) = 0 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|0x4000000, -1, 0) = 0x777de000 stat("/etc/ld.so.cache", 0x7f944760) = -1 ENOENT (No such file or directory) open("/lib/libmicroxml.so.1", O_RDONLY) = -1 ENOENT (No such file or […]

无法执行'x86_64-conda_cos6-linux-gnu-gcc':没有这样的文件或目录(pysam安装)

我正在尝试安装pysam。 执行完毕后: python path/to/pysam-master/setup.py build 产生这个错误: unable to execute 'x86_64-conda_cos6-linux-gnu-gcc': No such file or directory error: command 'x86_64-conda_cos6-linux-gnu-gcc' failed with exit status 1 有类似的线程,但他们似乎都解决了问题assumigpipe理员权利,我没有。 有没有办法来安装所需的文件? 免责声明:这个问题来自我以前的职位。 手动安装pysam错误:“ImportError:No module named version”但是由于它可能需要不同的方法,所以我提出了一个自己的问题。

在/ usr / local / lib中找不到gcc:链接库,但是/etc/ld/so.conf.d/libc.conf列出了它?

我遇到了共享库和gcc的问题。 起初我无法运行我编译的程序,因为我得到以下错误:加载共享库时的gcc错误。 我做了一些search,发现这是因为无法find共享库。 不过,我已经确定共享库位于/ usr / local / lib,其中AFAICT是共享库的一个常用目录,应该从头开始。 我读过,你可以设置LD_LIBRARY_PATH,这对我工作。 但是,我不希望每次我想运行我的程序设置。 进一步searchbuild议编辑ld.so.conf。 当我看到它时,有以下几点: include /etc/ld.so.conf.d/*.conf 查看ld.so.conf.d目录显示了一系列文件,包括libc.conf。 在这个文件里面是: /usr/local/lib 所以我的问题是,为什么我需要手动设置LD_LIBRARY_PATH当ld.so.conf似乎使用包含/ usr / local / lib的libc.conf? 有什么我在这里丢失,必须先configuration? 编译时有没有选项,我错过了? 我应该注意到,为了编译,我必须指定图书馆的path,我不知道这是否是我的问题或正常行为的症状。 我还应该注意到,当我在其他系统上部署我的软件时,这是我所关心的问题。 我会认为我应该能够把.so放在合适的地方,并且不用搞乱ld.so.conf就可以安装我的程序。 我希望这是这个问题的适当的论坛,我阅读了常见问题,我认为没关系。 干杯。

可以-std = c99防止我的#包含工作正常吗?

我想在Linux系统上编译一个C程序。 我有一个stdlib.h的#include语句。 当我用gcc编译程序时,如下所示: gcc -std=c99 -g -o progfoo progfoo.c progbar.c 我收到有关Implicit declaration of function [srand48, drand48, bzero, or close]警告。 编译为: gcc -g -o progfoo progfoo.c progbar.c 没有给我警告,但它确实对我使用for循环(这是首先添加-std=c99的理由)大喊大叫。 鉴于这个man srand48提到包括我所拥有的<stdlib.h> ,我不确定还有什么问题可以解决。 for循环对于任何事情来说都不是必须的(它们只是为了节省初始化数组的时间),所以我没有问题去除它们,但是在我做之前我想确认c99标准是否取代了我的#include陈述。 我正在使用gcc 4.1.2-50 (Red Hat) 。

获取不能分配内存错误

我在我的程序中得到这个错误… mprotect: Cannot allocate memory ulimit -a给出输出: core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 20 file size (blocks, -f) unlimited pending signals (-i) 16382 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX […]

G ++总是失败,对_Unwind_GetIPInfo未定义的引用

我刚刚升级到我的华硕EeePC上网本的Ubuntu 11.04,并与G ++有问题。 使用G ++编译任何程序,无论是使用iostream,cstdio还是stdio.h,即使是一个简单的“Hello World”,也会失败,并显示以下消息: /usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/libstdc++.so: undefined reference to `_Unwind_GetIPInfo@GCC_4.2.0' collect2: ld returned 1 exit status 我使用新立得包pipe理器。 在升级之前,Ubuntu提供了GCC 4.4,不过我也通过另一个仓库安装了GCC 4.5(gcc-4.5)。 GCC 4.5现在是Ubuntu 11.04的默认设置。 我认为这个问题可能与libgcc有关。 我尝试重新安装GCC,但是我无法删除libgcc:首先,新立得软件包pipe理器报告说在某处存在破损的软件包,并停止了我的尝试; 但我也注意到,删除libgcc将需要删除几乎所有的应用程序,包括apt和Firefox。 我也尝试了gcc-snapshot包; 不幸的是,它给出了上面列出的相同的错误。 有什么办法可以使用新立得软件包pipe理器来获取G ++的最新工作版本?

静态和内联

我在C编程。我想要一些关于静态和内联函数的描述。 我知道,如果我们把一个函数做成静态的,那么它就是编译器的一个指示,即它只在一个翻译单元的内部链接下。 我有以下关于静态和内联的疑问: 如果我们做一个静态的函数,我们可以在其他的翻译单元中使用它…即在其他.c文件中? 如果是的话,如何? 如果我们将函数作为静态内联,那么有什么区别? 编译器如何处理它? 是否将函数作为静态函数产生与macros相同的效果? 将函数视为内联取决于编译器的大小。 那么有什么办法可以强制让它像内联一样被对待? 我们如何使用内联和静态函数进行优化? 请在上面的内容中阐明一些内容。 平台是Linux,gcc编译器,C语言。

GCC 4.8和4.7会在同一台机器上和平共处吗?

安装gcc 4.7和4.8会在同一台机器上和平共存吗? 这将最初是Ubuntu 12.10(Quantal Quetzal)的机器,但可能会延长到其他机器和发行版,可能甚至我的Mac(这将是4.8和山狮最后提供的苹果gcc)。 我试图testing海湾合作委员会的改进诊断4.8比较他们叮当,因此我需要海湾合作委员会4.8。 如果上面的答案是肯定的,你如何调用gcc的每个安装?

如何在Linux上安装自定义gcc的boost?

我的gcc编译器位于自定义位置/ my / path / hpgcc 我已经下载了boost源码。 执行bootstrap.sh,但因为它使用默认的gcc运行,所以失败。 看着它,我发现它在第一件事情上失败了:构buildBoost.Build引擎: gcc -o bootstrap/jam0 command.c compile.c debug.c expand.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c newstr.c option.c output.c parse.c pathunix.c pathvms.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c pwd.c class.c native.c md5.c w32_getreg.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c execunix.c […]