glibc相关内容
可以在管道上执行非阻塞I/O吗? fcntl无法设置O_NONBLOCK. Linux编程接口的第918页包括一个表“从管道或FIFO(p)读取n个字节的语义".下表列出了管道和FIFO的行为,其中标题为O_NONBLOCK的列已启用?这意味着您可以在管道上设置O_NONBLOCK标志.这样对吗?以下代码无法设置该标志,但是fcntl(2)不会报告错误. #include
..
现代glibc二进制文件在Linux中称为libc.so.6.为什么在这里使用"6"? libc.so.1或libc.so.8也可以是好名字,恕我直言. Wikipedia在 http://en.wikipedia.org/wiki/GNU_C_Library 上提供了一些历史记录,但没有解释完全 在1990年代初期,Linux内核的开发者分叉了glibc.他们的分支"Linux li
..
当您调用clock_gettime()时,它将返回一个timespec结构. struct timespec { time_t tv_sec; /* seconds */ long tv_nsec; /* nanoseconds */ }; 我在手册页中没有找到tv_nsec不会超过一秒的保证.保证金实际上存在吗?是否可以依赖于Linux的库(glibc?)实现?
..
内核空间中有一个libc吗?我的意思是您必须针对某些libc构建内核,对吗?那么,内核空间中是否存在一个libc(可能是静态链接的)? 如果是,这与userland glibc有什么关系?它们必须是同一版本吗? 解决方案 内核空间中实际上没有libc. Libc是用户空间库,您不能在内核空间中使用它. 但是移植了libc中几乎所有在内核空间中有意义的函数.通常,您可以在incl
..
此处编译的C程序在我们的Ubuntu服务器上运行良好.但是,当其他人尝试在其特定的Linux服务器上运行它时,会出现以下错误: ./myprog-install: /lib/tls/libc.so.6: version `GLIBC_2.4' not found (required by ./myprog-install) ./myprog-install: /lib/tls/libc.so
..
我想在我的普通 c 代码中使用ld.so代码。 我试图在 TUI 模式下通过GDB进行代码流可以看到代码和程序集。 为此,我还安装了 libc-dbg binutils-source 来自ubuntu软件包管理器的软件包。 GDB可以找到 ld.so 本身的调试符号,我可以在指令级使用 si 但我无法步入源代码级别,因为GDB无法找到 ld.so 的源代码并且显示无可用源代码。 如
..
所以我有一个支持avx2指令集的新型花式CPU。 这很好,但打破了gdb反向调试。当没有优化编译时,代码仍然使用共享库,例如调用memset(),然后调用memset的avx2优化版本。这很棒,但是gdb记录不支持avx2。 进程记录不支持地址0x7ffff690dd80的指令0xc5。 0xc5是vex前缀。 反向调试对于不支持avx2的cpu很有效。我如何获得libc等不使
..
不加载VDSO.so是使用gdb和glibc> 2.2时遇到的着名错误之一。 我发现计划在gdb 7.5.1中修复,但事实并非如此。 好的我在这里找到了一个解决方法这里 ,但我不明白它如何应用它。 操作系统:Arch Linux IDE:QT创建者3.0.82 /> 编译器:GCC 4.8.2 注意:我不确定是否违反了包括上面链接的规则 不加载VDSO.so是您在
..
#define link_warning(symbol,msg)\\ glibc使用以下“技巧”生成链接警告。 \\ __make_section_unallocated(“.gnu.warning。”#symbol)\ static const char __evoke_link_warning _ ## symbol [] \ __attribute__((used,sectio
..
我正在尝试构建一个交叉编译器,x86_64是主机,i386是目标。我得到(所有常见的)crti.o:没有这样的文件错误。而不是从发行版中抓取已经构建的crti.o和crtn.o ...我怎么可以从glibc(或者可能是gcc)源代码中显式构建这些文件? FYI,我很清楚x86_64编译器的-m32选项。我宁愿只有一个32位编译器环境。另外,我不想使用任何gazillion已经构建的i386编
..
我正在开发一个多处理器架构模拟器,它使用Intel Pin来测试C ++可执行文件并报告有趣的事件(例如,某些函数调用,线程创建/完成等)。基本上,我构建了一个指令解码缓存,当它们的图像被加载时,所有的指令都被缓存,然后分析指令的执行。因此,映像加载时的指令地址在运行时与指令地址相同(或至少与指令地址同步更新)是非常重要的。 Intel Pin API(例如,IMG_AddInstrumen
..
为什么不可能重新编译GLibc关闭所有的优化(即-O0)? 特别是在这样做: make CFLAGS =' - O0 -w'CXXFLAGS =' - O0 -w' 我得到: #error“glibc无法编译而没有优化” 解决方案 如果您从字面上看只是Google的错误, a href =“http://devpit.org/wiki/Gn
..
我试图编译gtk堆栈(最后一个gtk2版本,2.24),并且我收到了一堆看起来相关的错误。也就是说,不能从string.h和time.h中找到 __ locale_t ,并且 LC_ALL_MASK 不能是(应该在locale.h中)。 我发现所有这些问题都与 __ USE_XOPEN2K8 不被#defined。什么是 __ USE_XOPEN2K8 for,以及如何设置它property
..
根据2008年的帖子(我现在找不到它), glibc堆检查在多线程环境中不起作用。现在是2010年的情况吗? 默认启用堆检查吗? (gcc 4.1.2)?我没有设置MALLOC_CHECK_,不知道调用mcheck(),但仍然有时会用backtrace获得双免费的glibc错误。也许它是由一些编译标志启用的? 解决方案默认情况下,不使用malloc_check_或mcheck ),glib
..
我写了一个非常简单的程序来调用 time()来说明 strace 的用法,有问题的; time()调用似乎实际上并没有产生系统调用! 我最终进入了 time()函数,现在我比以前更困惑了。从反汇编 time()函数: 0x7ffff7ffad90
..
我是生产环境中的C ++编译的新手 我想知道是否在使用gcc版本的计算机上运行用gcc4.7编译的C ++ 11可执行文件(在debian 6上)时是否存在任何问题,旧的glibc / libstdc ++。 谢谢 编辑: 我想在我的问题中添加更多细节(也许最好打开一个新问题?) 我需要用新的在Debian 7(对于gcc 4.7)中的C ++ 11中的libs 并
..
我有一个系统,我没有root权限,但我需要安装当前版本的GCC(4.7.2)。 系统正在运行Linux 2.6.18的x86_64版本,并且已经有了GCC 4.1(即使--version说它是用它编译的,也没有C ++支持)。编辑5:在这一点上,下面的步骤只是我试过的一套。从那时起我已经开始几次清洁。我正在寻找一个人来详细说明我需要的所有开关的确切顺序。 这是我到目前为止所经历的过程(
..
更新:我正在使用Linux上的GNU运行时。 更新2:我编译了GNU-在MacOS上运行,并用它构建示例。 GNU运行时在MacOS上发生错误 not 。我会说问题是glibc(因为 backtrace 和 backtrace_symbols 是glibc扩展名)。 使用 backtrace 和 backtrace_symbols ,我没有得到任何Objective-C符号。只有文件名
..
我尝试运行一些预编译的代码,但出现以下错误: ./ bin / stipdet:/cm/shared/apps/gcc/4.3.4/lib64/libstdc++.so.6:版本'GLIBCXX_3.4.11'找不到(需要./bin/stipdet) 我搜索了这个错误,看到有些人通过删除 libstdc ++。so.6 并添加一个指向 usr / local / lib 的
..
为什么glibc和pthread库都定义了相同的API?这里是快照 ubuntu @ ubuntu:/ lib $ objdump -T /lib/i386-linux-gnu/libc.so .6 | grep pthread_cond_signal 000f8360 g DF .text 00000039 GLIBC_2.3.2 pthread_cond_signal 0012
..