Tag: glibc

标准c库是否提供链表等数据结构?

标准的C库实现,特别是glibc (GNU C库)提供链表,stack等。 数据结构,还是我们必须推出自己的? 谢谢。

什么是_GLIBCXX_USE_NANOSLEEP?

名为_GLIBCXX_USE_NANOSLEEP的预处理器macros出现在两个标准头文件中: C ++ / 4.7.1 / x86_64的未知-Linux的GNU /比特/ C ++的config.h C ++ / 4.7.1 /线程 在GCC 4.7.1(Linux,64位)的默认版本中, c ++ config.h包含的唯一东西就是这个注释: /* Defined if nanosleep is available. */ /* #undef _GLIBCXX_USE_NANOSLEEP */ 而在线程中 , std::this_thread::sleep_for()和std::this_thread::sleep_until()定义取决于要定义的macros。 如果没有定义,那么这两个函数 – 尽pipe是C ++标准所要求的 – 都不会被定义。 在我的系统(glibc 2.15)中,虽然nanosleep()函数(在ctime声明)存在且可操作,但未定义该macros。 我想知道这是什么和如何处理它。 特别: 正如本文所build议的那样,在构buildGCC的时候应该使用一个configuration选项来默认激活这个macros? (我在构build过程的在线文档中找不到任何内容。) nanosleep()函数和macros之间真的有关系吗? nanosleep()在ctime / time.h中的声明似乎不依赖于或定义macros。 在我自己的头文件中定义macros是否有特定的风险,或者在命令行中使用-D选项(如本相关问题中所build议的)? 如果我在nanosleep()不可用的系统上执行此操作,又怎么能find? 更新从GCC 4.8开始,对std::this_thread::sleep_for()等的支持自动包含在libstdc ++中。 […]

编译没有libc

我想在没有(g)libc的情况下编译我的C代码。 我怎样才能停用它,哪些function依赖于它? 我尝试了-nostdlib,但没有帮助:代码是可编译的并运行,但是我仍然可以在我的可执行文件的hexdump中findlibc的名称。

gcc -D_FORTIFY_SOURCE = 1和-D_FORTIFY_SOURCE = 2之间的差异

有人能指出gcc -D_FORTIFY_SOURCE = 1和-D_FORTIFY_SOURCE = 2之间的区别吗? 我猜= 2更安全? 我一直没能find一个逐点列出差异的清单。 我也读过-D_FORTIFY_SOURCE = 2应该和-O2一起使用,否则不是所有的function都可用。 在这里,我还没有find一个列表,详细说明回归。 我特别希望用-Os进行编译,因为目标是一个没有太多闪存的设备。 任何提示,这是logging在案的欢迎!

如何在Debian上将glibc从版本2.13升级到2.15?

我听说我可以使用apt-get install libc6来完成 ,但是我需要添加一些东西到/etc/apt/sources.list来接收最新的glibc版本。 我该怎么办?

Linux的静态链接已经死了?

事实上,Linux上的静态 gcc标志现在不起作用。 让我引用GNU libc FAQ: 2.22。 即使静态链接程序需要一些共享库,这是我不能接受的。 我能做什么? 如果没有共享库,{AJ} NSS(仅仅input`info libc“Name Service Switch”')将无法正常工作。 NSS允许通过更改一个configuration文件(/etc/nsswitch.conf)而不用重新连接任何程序来使用不同的服务(例如NIS,文件,db,hesiod)。 唯一的缺点是现在静态库需要访问共享库。 这是由GNU C库透明地处理的。 一个解决scheme是使用–enable-static-nssconfigurationglibc。 在这种情况下,您可以创build一个只使用服务dns和文件的静态二进制文件(为此更改/etc/nsswitch.conf)。 您需要明确链接所有这些服务。 例如: gcc -static test-netdb.c -o test-netdb \ -Wl,–start-group -lc -lnss_files -lnss_dns -lresolv -Wl,–end-group 这种方法的问题是,你必须链接每个使用NSS例程的静态程序和所有这些库。 {UD}实际上,我们不能说使用这个选项编译的libc正在使用NSS。 没有开关了。 因此, 强烈build议不要使用–enable-static-nss,因为这会使系统上的程序行为不一致。 关于这个事实,现在有没有什么合理的方法来在Linux上创build一个全function的静态构build,或者静态链接在Linux上完全失效? 我的意思是静态构build: 行为与dynamic构build完全相同(static-nss具有不一致的行为是邪恶的! 适用于glibc环境和Linux版本的合理变体;

什么是glibc免费/ malloc / realloc无效的下一个大小/无效指针错误,以及如何解决它?

你最有可能看到这个问题,因为你的问题已经被封闭,作为这个副本。 有关相关问题的中等完整列表,请参阅可能重复的长列表 – C堆内存分配和元堆栈溢出溢出边界 。 示例问题 从免费字符*:无效的下一个大小(快)在2014-04-11由noobie问。 我在一个串联进程后释放一个char* ,但是我收到这个错误: free(): invalid next size (fast): 0x0000000001b86170 这是我的代码: void concat(stringList *list) { char *res = (char*)malloc(sizeof(char*)); strcpy(res, list->head->string); list->tmp = list->head->next; while (list->tmp != NULL) { strcat(res, ","); strcat(res, list->tmp->string); list->tmp = list->tmp->next; } printf("%s\n", res); free(res); } 一般问题 运行我的程序时,我看到如下的错误信息: *** glibc detected *** ./a.out: free(): corrupted […]

build立一个.so这也是一个可执行文件

所以大家可能知道glibc的/lib/libc.so.6可以在shell中像正常的可执行文件那样执行,在这种情况下,它会打印版本信息并退出。 这是通过在.so中定义一个入口点来完成的。 对于某些情况,也可以将其用于其他项目。 不幸的是,你可以通过ld的-e选项设置的低级入口点有点太低级:dynamic加载器不可用,所以你不能调用任何适当的库函数。 glibc出于这个原因在这个入口点通过裸机系统调用来实现write()系统调用。 我现在的问题是,任何人都可以想出一个很好的方法,如何从这个入口引导一个完整的dynamic链接器,以便可以访问其他.so的函数?

Linux 3.0:使用pipe道stdin / stdout执行subprocess

在Linux 3.0 / C ++下: 我想要一个function,执行以下操作: string f(string s) { string r = system("foo < s"); return r; } 上述显然不起作用,但你明白了。 我有一个strings,我想通过作为应用程序“foo”的subprocess执行的标准input,然后我想将其标准输出logging到stringr,然后返回它。 我应该使用什么linux系统调用或posix函数的组合?

在Ubuntu 12.04中导入python2.7中的Tensorflow时出错。 'GLIBC_2.17找不到'

我已成功安装了与python的Tensorflow绑定。 但是当我尝试导入Tensorflow时,出现以下错误。 ImportError:找不到/lib/x86_64-linux-gnu/libc.so.6:'GLIBC_2.17'版本(/usr/local/lib/python2.7/dist-packages/tensorflow/python/_pywrap_tensorflow.so ) 我试图更新GLIBC_2.15到2.17,但没有运气。