Articles of gcc

/usr/lib64/libstdc++.so.6:未find版本`GLIBCXX_3.4.15'

我正在尝试运行appiumtesting。 但是我得到错误说什么: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found 我正在使用RedHat6.6。 当我运行: strings /usr/lib/libstdc++.so.6 | grep GLIBC 我得到这个: GLIBC GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBC_2.0 GLIBC_2.3 GLIBC_2.4 GLIBC_2.1 GLIBC_2.1.3 GLIBC_2.3.2 GLIBC_2.2 GLIBCXX_FORCE_NEW GLIBCXX_DEBUG_MESSAGE_LENGTH 是否有可能为RedHat6.6获得GLIBCXX_3.4.15?

在gcc中禁用可变长度的自动数组

即使使用-std=c89标志,我也无法禁用它。 我怎样才能禁用它?

关于Linux的二进制兼容性

如果我得到一些由Ubuntu构build的C ++代码,比如Ubuntu上的GCC 4.8,代码没有GUI /接口,只调用标准的Linux库,那么可以在RHEL 5/6上运行的二进制文件,完美无瑕的GCC?

Clang / GCC真的支持延迟加载function吗?

如果您真的体验过与上述标题相关的内容,您是否愿意留下您的评论? 我试图做一个共享对象延迟加载与Clang和GCC在Ubuntu上(我其实不介意使用哪个编译器),但他们看起来不是真的支持任何延迟加载function(我期望延迟加载function把一个存根放到一个父对象中,这个父对象试图按需要加载另一个对象,此时需要这个function,但实际上并没有)。 以下命令显示我试图将libbar.so延迟加载到libfoo.so: clang bar.c -fPIC -shared -o libbar.so clang foo.c -Wl,-zlazy,lL'/path/to/where/lib/is',-lbar -o foo 如果libbar.so不存在,您将在input条目之前看到libfoo.so引发exception。 无论如何,我不介意上面的命令是否有错字,但是想知道Clang / GCC是否真的支持延迟加载function 。 但是就我个人而言,如果Clang / GCC不支持任何延迟加载特性,我不相信Linux程序开发者是否需要调用dlopen()或dlsym()来使共享对象延迟加载。 如果对象是用C编写的,但是如果用C ++编写的话,情况必须完全复杂: 我相信一个在编译器或链接器的帮助下实现的解决scheme是最好的,因为我已经成功地在Windows和Mac OS上完成了它。 所以我觉得这将是一个自然的反应,即使在Clang / GCC上,公民也希望拥有延迟加载function。 如果您对我的感受有任何评论,我也会很感激。 PS。 我知道Solaris支持延迟加载function,但这不是我的方式,因为我不会开发任何东西。 无论如何,非常感谢你提前。

为什么inttypes在BSS段占用8个字节,而在DATA段占用4个字节

我正在学习C程序的可执行文件的结构。 我的环境是GCC和64位英特尔处理器。 考虑下面的C代码a.cc #include <cstdlib> #include <cstdio> int x; int main(){ printf("%d\n", sizeof(x)); return 10; } size -oa显示 text data bss dec hex filename 1134 552 8 1694 69e a 我添加了另一个初始化的全局variablesy后。 int y=10; size a显示(其中a是来自a.cc的可执行文件的名称) text data bss dec hex filename 1134 556 12 1702 6a6 a 我们知道, BSS部分存储未初始化的全局variables的大小, DATA存储初始化的全局variables。 为什么int在BSS中占用8个字节? 我的代码中的sizeof(x)表明int实际上占用了4个字节。 int y=10将4个字节添加到DATA,因为int应该占用4个字节。 但是,为什么它将4个字节添加到BSS? […]

如何在启用“墙”时禁用特定的警告

我在我的Makefile中使用了-Wall -Werror ,但是我想禁用以下特定types的警告: warning: '_wrap_delete_DMXTSFILTER' defined but not used 我该怎么做?

如何在gcc内联汇编中使用全局variables

我正在尝试像这样使用内联汇编,对于全局variables,但编译器通过说明对saved_sp的未定义引用给出错误。 __asm__ __volatile__ ( "movq saved_sp, %rsp\n\t" ); saved_sp全局声明为static long saved_sp (对于一个文件)。 我在这里犯了什么错误?

为什么在_start之前调用glibc的csu / init-first.c中的_init,即使_start是ELF入口点?

我在玩GDB的rbreak .时候首先注意到了它rbreak . ,然后做了个小例子: (gdb) file hello_world.out Reading symbols from hello_world.out…done. (gdb) b _init Breakpoint 1 at 0x4003e0 (gdb) b _start Breakpoint 2 at 0x400440 (gdb) run Starting program: /home/ciro/bak/git/cpp/cheat/gdb/hello_world.out Breakpoint 1, _init (argc=1, argv=0x7fffffffd698, envp=0x7fffffffd6a8) at ../csu/init-first.c:52 52 ../csu/init-first.c: No such file or directory. (gdb) continue Continuing. Breakpoint 2, 0x0000000000400440 in _start () (gdb) […]

EC2上没有C编译器?

我一直在试图在我的EC2实例上安装Gearman,但是当我尝试./configure gearmand时,我得到这个: checking build system type… x86_64-unknown-linux-gnu checking host system type… x86_64-unknown-linux-gnu checking target system type… x86_64-unknown-linux-gnu checking for gcc… no checking for cc… no checking for cl.exe… no configure: error: in `/home/ec2-user/gearmand-1.1.3': configure: error: no acceptable C compiler found in $PATH See `config.log' for more details 现在,奇怪的是,GCC是绝对安装的。 which gcc46 回报 /usr/bin/gcc46 但是,当我尝试运行命令“gcc”时,找不到… 我试图通过yum擦除/安装/重新安装gcc和gcc-c ++,但这似乎没有帮助。 […]

GCC构build问题(#include_next limits.h)

当我尝试 $ make depends -f gcc.mak 我的Ubuntu机器上的中间件我得到这个 /usr/include/../include/limits.h:125:26:错误:不包含要在其中searchlimits.h的path 这是limits.h的内容:125: / *获取编译器的limits.h,它定义了几乎所有的ISO常量。 我们把这个#include_next放在双重包含检查之外,因为 应该有可能包含这个文件不止一次,仍然得到 来自gcc头文件的定义。 * / #if defined __GNUC__ &&!defined _GCC_LIMITS_H_ / *`_GCC_LIMITS_H_'是GCC文件定义的。 * / #include_next <limits.h> #万一 我试着设置 $ export INCLUDE = / usr / lib / gcc / x86_64-linux-gnu / 4.3 / include-fixed / $ export C_INCLUDE_PATH = / usr / lib / […]