libc相关内容
我正在使用gdb调试一个使用libp线程的程序。有一个错误 发生在pthREAD_CREATE中,需要进入该函数。不幸的是,当我调试我的程序时,它不能正确地加载共享库符号,所以我不能跳过源代码并有意义地检查程序行为。这是我启动gdb时的输出。 Remote debugging using 127.0.0.1:21293 warning: limiting remote suggested p
..
示例代码: void accept(int x); int main(void) { accept(0); return 0; } 调用: $ gcc t719.c -std=c11 -pedantic -Wall -Wextra $ clang t719.c -std=c11 -pedantic -Wall -Wextra
..
我想了解Libc如何共享库加载到内存中并在进程之间共享?是否有一个加载到内存中并在所有进程之间共享的libc实例,或者是每个进程的内存中的每个libc实例。我不清楚如何在进程之间共享libc。 谢谢 Aditya libc 推荐答案的一个实例在所有进程之间共享。参见"The Inside Story On Shared Libraries And Dynamic Loading"
..
sig_dfl(信号的默认处理程序)到底做什么?我对调试SIGTSTP很感兴趣。它在奇怪的条件下会有轻微的行为不端。如果其中一个线程处于TASK_INTERRUPTBLE状态,我怀疑它在做一些奇怪的事情。 sig_dfl源代码在哪里?Libc? 谢谢。 推荐答案 SIG_DFL(信号的默认处理程序)到底做什么? 它的作用与预期完全相同:通知内核给定信号没有用户信号处理
..
我写了这个函数来从文件中读取一行: const char *readLine(FILE *file) {如果(文件 == NULL){printf("错误:文件指针为空.");退出(1);}int 最大线长度 = 128;char *lineBuffer = (char *)malloc(sizeof(char) * maximumLineLength);if (lineBuffer == NU
..
我正在寻找一个小型 libc,用于在 ARM7 微控制器上与 freertos 一起使用.我看过 newlib,但它对我的需要来说有点太复杂了.Newlib 调用 malloc() 在一些函数(例如 printf()),这对于小型嵌入式实时系统来说并不好. 有谁知道适合我的应用程序的小型、可移植、开源的 libc 实现吗? 解决方案 PDCLib 可能 满足您的需求.仍然不完整 [断
..
我试图避免 Stackoverflow 条目中描述的情况:调试客户盒子上生成的核心文件.如果我静态编译所有库,我会避免在核心转储时始终收集共享库吗?我基本上想处于一种可以使用 gdb 加载核心文件并检查崩溃的应用程序的情况. 如果我走静态链接我们需要的所有库的路线,我应该注意什么.我认为 glib 和 pthreads 可能会导致最大的问题. Valgrind 会不再有用吗?如果我针对
..
..
我目前正在使用为 PowerPC 440 编译的 GCC 4.5.3,并且正在编译一些不需要 libc 的代码.我没有直接调用 memcpy(),但编译器似乎在构建过程中插入了一个. 有 -nostdlib、-nostartfiles、-nodefaultlibs 等链接器选项,但我无法使用它们,因为我没有进行链接阶段.我只是在编译.像这样: $ powerpc-440-eabi-gcc
..
我正在使用标准 mktime 函数将 struct tm 转换为纪元时间值.tm 字段在本地填充,我需要将纪元时间设为 GMT.tm 有一个 gmtoff 字段,允许您为此目的以秒为单位设置本地 GMT 偏移量. 但我不知道如何获取该信息.当然一定有一个标准函数可以返回偏移量吗?localtime是怎么做到的? 解决方案 我想我应该在提问之前做更多的搜索.原来有一个鲜为人知的 tim
..
我们有一个 CFD 求解器,在运行模拟时,发现它在某些机器上运行异常缓慢,但在其他机器上却没有.使用 Intel VTune,发现以下行是问题(在 Fortran 中): RHOV= RHO_INF*((1.0_wp - COEFF*EXP(F0)))**(1.0_wp/(GAMM - 1.0_wp)) 用 VTune 钻取,问题被追踪到 call pow 组装线,当追踪堆栈时,它显示它正在使
..
尝试运行多个可执行文件时出现以下错误: /lib/libc.so.6:未找到版本“GLIBC_2.7"(.tools/bridge/bridge 需要) 我最近从 CentOS 5.3 升级到 5.7(我需要在 CentOS 5 上运行这些工具,所以我无法升级到 6).我重新编译了整个代码,但仍然出现这个错误. 有人遇到过这种错误吗? 谢谢,克劳迪乌 解决方案 这个错误的意
..
我正在使用 OpenGL 在 Android 上创建 2D 游戏.目前我正在多台设备上测试和调试游戏.我面临的问题是可怕的“信号 11"错误. 当我在我的三星 Galaxy Nexus 上玩游戏时,一切都很顺利,我可以玩几个小时而不会出现任何错误.我的 Nexus 正在运行 Android 4.0 Ice Cream Sandwich. 现在,当我在其他设备上运行它时,我收到了这个信号
..
在使用 NASM 构建定义自己的 _start 而不是 main 的汇编程序时,我得到了一个 undefined reference to _printfx86-64 Ubuntu 构建命令: nasm -f elf64 hello.asmld -s -o 你好你好.ohello.o:在函数“_start"中:hello.asm:(.text+0x1a): undefined refer
..
由于版本差异,我想与我的程序一起提供共享库,而不是使用目标系统的. ldd 说我的程序使用了这些共享库: linux-gate.so.1 =>(0xf7ef0000)**(内核制作)**libc.so.6 =>/lib32/libc.so.6 (0xf7d88000)**(libc-2.7.so)**/lib/ld-linux.so.2 (0xf7ef1000)**(ld-2.7.so)*
..
Linux 二进制文件通常动态链接到核心系统库 (libc).这使得二进制文件的内存占用非常小,但依赖于最新库的二进制文件不会在旧系统上运行.相反,链接到旧库的二进制文件将在最新系统上愉快地运行. 因此,为了确保我们的应用程序在分发期间具有良好的覆盖率,我们需要找出我们可以支持的最旧的 libc 并将我们的二进制文件链接到它. 我们应该如何确定可以链接到的最旧版本的 libc?
..
我正在制作一个需要彩色输出的简单应用程序.如何让我的输出像 emacs 和 bash 一样着色? 我不关心 Windows,因为我的应用程序仅适用于 UNIX 系统. 解决方案 所有现代终端模拟器都使用 ANSI 转义码来显示颜色和其他内容. 不用担心库,代码很简单. 更多信息在这里. C 中的示例: #include #define ANSI_COLOR_RED "
..
我们在这里讨论了为什么 fread() 和 fwrite() 为每个成员指定一个大小并计算并返回读取/写入的成员数量而不是不仅仅是获取缓冲区和大小.我们可以想出的唯一用途是,如果您想读/写一个结构数组,这些结构不能被平台对齐整除,因此已被填充,但不能如此普遍以保证这种选择在设计中. 来自fread(3): 函数 fread() 读取 nmemb 元素的数据,每个 size 字节长,从流
..
我想在没有 (g)libc 的情况下编译我的 C 代码.如何停用它以及哪些功能依赖于它? 我试过 -nostdlib 但它没有帮助:代码是可编译和运行的,但我仍然可以在我的可执行文件的十六进制转储中找到 libc 的名称. 解决方案 如果你用 -nostdlib 编译你的代码,你将无法调用任何 C 库函数(当然),但你也没有得到常规的 C 引导代码.特别是,Linux 上程序的真正入
..
问题的简短版本:如何让 gdb 使用 libc 的调试符号? 更长的版本:我正在使用 gdb 调试程序,我想查看有关 libc 使用的 futex 的信息.但是,在调试过程中的某个时刻,我得到如下输出: Catchpoint 2(调用 syscall futex),0x00007ffff772b73e in ??() 来自/lib/libc.so.6(gdb) bt#0 0x00007ff
..