glibc相关内容

直接与LD链接一个C程序失败,未定义的引用`__libc_csu_fini`

我试图编译Linux下的C程序。然而,出于好奇,我试图用手来执行一些步骤:我使用的: gcc的前端,产生汇编code 然后运行GNU汇编获取对象文件 然后再与C运行时链接它得到一个工作的可执行文件。 现在我被困在连接的部分。 该计划是一个非常基本的“Hello world”: 的#include<&stdio.h中GT; 诠释主(){ 的printf(“你好\\ n ..
发布时间:2016-08-18 14:24:20 C/C++

链接glibc的静态,但其他一些与海湾合作委员会动态库

我需要静态链接glibc的到我的项目,因为目标平台只支持一个很旧的(但它与静态链接glibc的作品从我的工具链,我已签吧) 不幸的是,此应用程序有权使用pthread库,但静态链接的libpthread需要太多的地方。 我想静态链接glibc的,动态的pthread。 运行这个命令之后 PowerPC的未知Linux的GNU-GCC object_files -lrt -lpthread ..
发布时间:2016-08-18 14:24:03 C/C++

如何glibc的的strlen()实现工程

的的strlen()从K&安培; R只需要几行。 INT的strlen(字符* S) { 字符* P = S; 而(* P!='\\ 0') p ++; 返回对 - S; } 但 glibc的版本更长的时间。为简单起见,我删除了所有的意见和64位实现,提取的版本的strlen()是这样的:为size_t strlen的(为const char *海 ..
发布时间:2016-08-18 14:05:07 C/C++

printf的减慢我的计划

我有一个小的C程序来计算哈希值(哈希表)。在code看起来挺干净的,我希望,但有一些无关的它,是缠着我。 我可以很容易地产生约0.2-0.3秒,约一百万哈希值(与基准的/ usr / bin中/时间)。然而,当我的printf()在for循环inging他们,程序减慢至约5秒。 这是为什么? 如何使它更快吗? mmapp()ING标准输出可能? 如何stdlibc在关于这个设计的,怎么 ..
发布时间:2016-08-18 14:03:07 C/C++

在哪里可以找到选择()源$ C ​​$在glibc的C源?

我试图找到glibc的源$ C ​​$ C选择()源$ C ​​$ C(Linux操作系统,i386的弓), 但我无法找到任何(与该架构) 可能有人点我的选择()源$ C ​​$ C? 解决方案 选择()不是libc中的功能,但是内核函数,所以你需要看看到内核源代码。 您可以通过查看手册页告诉这一点:如果是在第2节,这是一个内核函数,如果是在第3节,这是标准C库的函数,你的情况gli ..
发布时间:2016-08-18 13:32:39 服务器开发

任何功能查询已分配块的大小?

我意识到,任何这样的功能很可能是非标准,但没关系我的用例。基本上,我需要一种方法,我可以传递一个指针,返回的大小(即是由previous调用返回的malloc()函数的指针)(即使它通过的glibc的系统调用()接口只露)方框在指针指向。难道这样的事情存在? 解决方案 据我所知,至少有在C90 / C99无此功能。有些系统,主要是libc中,提供的功能来获得分配的大小(例如malloc_s ..
发布时间:2016-08-18 13:31:30 C/C++

这是可以自定义的printf?

我有一些结构,我需要经常打印。现在,我使用的是传统的印刷包装解决此结构: 无效printf_mystruct(结构* my_struct) { 如果(my_struct == NULL)回报; 的printf(“[值1:%d个VALUE2数:%d]”,struct->值1,struct->值2); } 此功能是方便,但也实在有限。我不能prepen或追加一些文本而不进 ..
发布时间:2016-08-18 13:25:41 服务器开发

如何建立使用的glibc和静态链接的定制版本C程序?

我已经建立的glibc 2.14,并在目录中安装了〜/ GLIBC / glibc_install 。现在我想建立和运行使用此C库,而不是我的系统默认的C库程序。 要确保我是用我的自定义的glibc,我加入到看跌期权的呼叫到的glibc / STDIO常见/ printf.c:__的printf 打印一个消息。 然后我重建和重新安装glibc的。 然后我写了一个“Hello,Wo ..
发布时间:2016-08-18 13:25:03 C/C++

用-static-libgcc的-static-的libstdc ++编译仍然导致在libc.so动态依赖

我试图做一个可执行这就是尽可能携带。 :删除一些依赖关系之后,我遇到以下运行的另一个系统上的二进制来时 /lib/x86_64-linux-gnu/libm.so.6:版本`GLIBC_2.15'未找到(必填通过foob) /lib/x86_64-linux-gnu/libc.so.6:版本`GLIBC_2.15'未找到(由foob要求) /lib/x86_64-linux-gnu/libc. ..
发布时间:2016-08-18 13:14:28 C/C++开发

当长度大于4GB的mmap失败

(正确的code在“更新5') 我试图的范围内0x100000000存储器在该例C code映射到0x200000000 的#include<&stdio.h中GT; #包括LT&;&stdlib.h中GT; #包括LT&;&stdint.h GT; #包括LT&; SYS / mman.h>INT主要(无效) { uint64_t中* rr_addr = 0; u ..
发布时间:2016-08-18 13:07:25 服务器开发

_GNU_SOURCE和__USE_GNU

我想用 CPU_SET ,这是一个应该在 sched.h中该手册页明确指出, _GNU_SOURCE 必须定义,这样的宏定义。然而,看着头, CPU_SET 定义只有当 __ USE_GNU 定义(有一个 #IFDEF 后卫)。我似乎在几年前的 _GNU_SOURCE 需要记住。 问题: 1)明确的联机帮助页关闭。我如何通知维护人员的手册页是不正确的? 2)什么时候从 _GNU_SOURCE ..
发布时间:2016-08-18 13:04:19 服务器开发

多个线程能够同时获得一群

我是IM pression的羊群(2)是线程下安全起见,我最近,跑过在code,其中多个线程都能够得到上都与使用使用C API羊群获得独占锁的同步同一个文件锁的情况。该过程25554是多线程应用程序,它具有20个线程,当死锁发生具有锁定到同一文件的线程数而变化。在多线程应用程序的 testEvent 的是作家的文件,其中是推的是从文件中读取。不幸的是, lsof的不打印LWP值,因此我无法找到它们 ..
发布时间:2016-08-17 23:32:44 服务器开发

编译没有的libc

我想编译我的C code无(G)的libc。我怎样才能将其停用,哪些功能取决于它? 我试过-nostdlib但它没有帮助:code是编译和运行,但我仍然可以找到自己的可执行文件的hexdump都libc中的名称。 解决方案 如果您编译code。与-nostdlib,你将无法调用任何C库函数(当然),但你也不要“得到的,常规的C引导code。特别是,在Linux的节目的实际进入点是不mai ..
发布时间:2016-08-17 23:04:27 C/C++

Linux的3.0:与管道标准输入/输出执行子进程

在Linux 3.0 / C ++: 我想,做如下的功能: 串f(字符串s) { 串R =系统(“富< S”); 返回ř; } 显然,上述方法不工作,但你的想法。我有一个,我想字符串s传递的应用“foo”的一个子进程执行的标准输入,然后我想它的标准输出记录到串R,然后返回。 我应该用什么样的组合的Linux系统调用或POSIX功能? 解决方案 由eerpini提供 ..
发布时间:2016-08-17 21:26:24 服务器开发

构建一个.so,这也是一个可执行

所以每个人大概都知道的glibc的 /lib/libc.so.6 可以像在哪些情况下它打印其版本信息并退出一个正常的可执行shell执行。这是通过在所述的.so限定的入口点进行。对于某些情况下,它可能是有趣的,也将此信息用于其他项目。不幸的是,低级别的切入点,可以通过LD的-e选项设置是有点太低级:动态加载程序不可用,所以你不能调用任何适当的库函数。的glibc为此通过实施这个切入点赤裸裸的系统调 ..
发布时间:2016-08-17 21:15:40 服务器开发

在C code。使用C ++库

我有一个C ++库,提供各种类别的管理数据。我源$ C ​​$ C的库。 我要扩展C ++ API来支持C函数调用,使得库可以与C code和C ++ code同时使用。 我使用GNU工具链(GCC,glibc的,等等),所以语言和架构的支持不是问题。 有什么原因,这就是技术上不可能? 是否有任何的疑难杂症的,我需要注意的? 是否有资源,例如:code和/或文档提供有关本? 这是我已经 ..
发布时间:2016-08-17 21:04:05 C/C++开发