glibc相关内容
如果我使用pTHREAD函数,则必须在GCC上使用&lpthread&qot;参数以确保正确链接。然而,为什么GCC在链接其他标准函数时不需要额外的参数?例如:printf、scanf、poix套接字等 推荐答案 在类Unix系统上,C库的某些部分历来是在单独的共享对象中实现的。编译器驱动程序(gcc)只与-lc(和动态加载器)隐式链接,而不是这些其他共享对象,例如-lm(数学库)、-
..
我相信其他 Fedora 28 用户会知道,操作系统的 glibc 最近更新为 glibc 2.27.除了许多其他功能之外,2.27 还添加了 logf() 和 powf() 的新实现.这导致我的应用程序无法在具有较旧 glibc(例如 Debian)的发行版上运行.在 Debian 上调用应用程序时,会产生以下错误: ... libm.so.6 版本 GLIBC-2.27 未找到(./ap
..
我听说我可以使用 apt-get install libc6 做到这一点,但我需要在/etc/apt/sources.list 中添加一些内容以接收最新的 glibc 版本.我该怎么办? 解决方案 通过编辑 Debian Wheezy 中安装 libc6 2.17"https://stackoverflow.com/a/15766756/945863">错误答案: 重要 您需要按
..
我刚刚写了一段 CPP 代码,并在 ubuntu 中使用 G++ 编译了它.当我运行我的代码时,一切都很好,代码运行良好并提供输出但不退出并出现此错误: *** 检测到 glibc *** ./a.out: free(): 下一个大小无效(快速):0x09f931f0 ***======= 回溯:=========/lib/libc.so.6(+0x6c501)[0x3de501]/lib/li
..
我如何获得 POSIX strerror_r 而不是 GNU 版本? 我在 Ubuntu 8.04 上使用 g++ 和 glibc 2.7 版进行编译(基于其中的内容). 编辑 在上面的手册页上写着: glibc 的功能测试宏要求(参见 feature_test_macros(7)): 在以下情况下提供 strerror_r() 的 XSI 兼容版本:(_POSIX_C
..
我是在玩 GDB 的 rbreak . 时第一次注意到它,然后做了一个最小的例子: (gdb) 文件 hello_world.out从 hello_world.out 读取符号...完成.(gdb) b _init0x4003e0 处的断点 1(gdb) b _start0x400440 处的断点 2(gdb) 运行启动程序:/home/ciro/bak/git/cpp/cheat/gdb/he
..
不加载 VDSO.so 是您在使用 gdb 和 glibc >2.2 时遇到的著名错误之一.我发现计划在 gdb 7.5.1 中修复它,但事实并非如此.好的,我在这里找到了解决方法 这里,但我没有不明白怎么应用. 操作系统:Arch Linux IDE:QT 创建者 3.0.82 编译器:GCC 4.8.2 注意:我不确定我是否违反了包括上面链接在内的规则 解决方案 不加载
..
我需要在 RHEL 6 linux 系统上安装这 2 个软件包.其他几个程序都需要它们. 当我这样做时: sudo yum install glibc-devel 这是输出: 加载的插件:product-id, security设置安装过程软件包 glibc-devel-2.12-1.166.el6_7.1.x86_64 已安装且最新版本没事做 是否有一些用于 RHEL 的带有 GL
..
尝试运行多个可执行文件时出现以下错误: /lib/libc.so.6:未找到版本“GLIBC_2.7"(.tools/bridge/bridge 需要) 我最近从 CentOS 5.3 升级到 5.7(我需要在 CentOS 5 上运行这些工具,所以我无法升级到 6).我重新编译了整个代码,但仍然出现这个错误. 有人遇到过这种错误吗? 谢谢,克劳迪乌 解决方案 这个错误的意
..
我不知道如何在 CentOS 6.3 上将 glibc 从版本 2.12 升级到 2.14.我需要你的帮助. 解决方案 您无法在 Centos 6 上安全地更新 glibc.但是,您可以轻松地将 2.14 与 2.12 一起安装,然后使用它来编译项目等.方法如下: mkdir ~/glibc_install;cd ~/glibc_installwget http://ftp.gnu.or
..
我对limits.h 中的CHAR_BIT 感到困惑.我读过一些文章说宏 CHAR_BIT 是为了可移植性.在代码中使用宏而不是像 8 这样的幻数,这是合理的.但是limits.h来自glibc-headers,它的值固定为8.如果glibc-headers安装在一个字节超过8位(比如16位)的系统上,编译时会出错吗?'char' 分配 8 位或 16 位? 而当我在limits.h中将CH
..
我正在尝试使用 LD_PRELOAD 机制插入对 pthread_cond_broadcast 的调用.我插入的 pthread_cond_broadcast 函数只是调用了原始的 pthread_cond_broadcast.但是,对于一个同时调用 pthread_cond_wait 和 pthread_cond_broadcast 的非常简单的 pthread 代码,我要么在 glibc 中出
..
魔法咒语 LD_PRELOAD=/lib/libSegFault.so someapp 使用 libSegFault.so 运行 someapp,提供关于 SIGSEGV 的回溯信息,如 很多 不同 地方. 除了使用类似 signal(7) 的方法来导致 SIGABRT 调用 SIGSEGV 处理程序之外,还有什么方法可以获取 libSegFault为 assert(3) 失败提供回溯信
..
谁能帮我理解这个错误信息? *** 检测到 glibc *** ./kprank_new3_norm: munmap_chunk(): 无效指针: 0x00000000096912d0 ***======= 回溯:=========/lib64/libc.so.6(cfree+0x1b6)[0x3df6e75a36]./kprank_new3_norm[0x409277]./kprank_new
..
我正在尝试实现一个最小内核,并且我正在尝试实现克隆系统调用.在手册页中,您可以看到这样定义的克隆系统调用: int clone(int (*fn)(void *), void *stack, int flags, void *arg, .../* pid_t *parent_tid, void *tls, pid_t *child_tid */); 如您所见,它接收一个函数指针.如果您仔细阅读
..
我对 glibc 中实现的 malloc_trim 的行为感到困惑. man malloc_trim[...]malloc_trim - 从堆顶释放空闲内存[...]此函数无法释放位于堆顶部以外的位置的空闲内存. 当我现在查找 malloc_trim() 的源代码(在 malloc/malloc.c 中)时,我看到它调用了 mtrim(),它正在使用 madvise(x, MADV_DONTN
..
我需要将 glibc 静态链接到我的项目,因为目标平台只支持一个非常旧的平台(但它适用于我的工具链中的静态链接 glibc,我已经检查过了) 不幸的是,这个应用程序必须使用 pthread 库,但是静态链接的 libpthread 占用了太多空间. 我想静态链接glibc,动态pthread. 运行此命令后 powerpc-unknown-linux-gnu-gcc objec
..
大多数在线资源表明您可以静态链接 glibc,但不鼓励这样做;例如centos 软件包回购: glibc-static包包含C库静态库用于静态链接.你不需要这些,除非你静态链接,这是非常不鼓励的. 这些消息来源很少(或从不)说明为什么这是一个坏主意. 解决方案 其他答案给出的理由是正确的,但不是最重要的原因. glibc 不应该被静态链接的最重要原因是它在内部大量使用了 dlop
..
我正在尝试在 Linux 下编译 C 程序.但是,出于好奇,我尝试手动执行一些步骤:我使用: 生成汇编代码的 gcc 前端 然后运行 GNU 汇编程序以获取目标文件 然后将其与 C 运行时链接以获得工作可执行文件. 现在我被链接部分卡住了. 程序是一个非常基础的“Hello world": #include int main() {printf("你好
..
我正在从 sqrt 函数(用于 64 位双精度)>fdlibm 到我目前正在使用的模型检查工具 (cbmc). 作为我工作的一部分,我阅读了很多关于 ieee-754 标准的内容,但我认为我不了解基本操作(包括 sqrt)的精度保证. 测试我的 fdlibm 的 sqrt 端口,我在 64 位双精度上使用 sqrt 得到以下计算: SQRT(19770615168252036055552
..