glibc相关内容
我对__NR_execve的系统调用感到困惑.当我学习linux系统时调用.我知道使用execve的正确方法是这样的: char *sc[2]; sc[0]="/bin/sh"; sc[1]= NULL; execve(sc[0],sc,NULL); 然后,函数execve将调用syscall()进入系统内核,并将参数放在寄存器EAX,EBX,ECX和EDX上.但是,如果我使用
..
下载并编译了glibc-2.13.当我尝试运行执行malloc()的示例C程序时.我收到以下错误 elf file OS ABI invalid 任何人都可以通过我的任何指针来解决此问题.请注意,我的内核版本是linux-2.6.35.9 解决方案 问题不是您的内核版本. 您系统上的加载程序不支持新的Linux ABI.直到最近,Linux ELF二进制文件仍使用System
..
我有一个问题:如果我们有一个不使用线程的应用程序,我们可以通过两种方式链接它: 1)照常链接,没有-lpthread和-ldl 2)将两个库添加到链接:libpthread和libdl. 例如 $ cat a.c int main(){printf("Hehe");} $ gcc a.c -w -o a $ gcc a.c -w -o a1 -ldl -lpthread
..
我正在尝试编译自己的glibc.我有一个目录glibc,其中包含我从互联网上下载的glibc源代码.在该目录中,键入mkdir ../build-glibc.现在,从build-glibc目录中键入../glibc/configure,它执行了配置.现在,我不确定如何调用make.我没有从glibc目录调用它,因为它没有配置设置,我也不能从build-glibc调用它,因为makefile不在该目
..
如果我在计算机上编译一个C ++程序,然后在另一个(使用较旧的软件)上运行它,则会得到:/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found. 实际上在我的系统上glibc是较新的(我得到gcc-libs 4.5.1:libstdc ++.so.6.0.14),并且strings /usr/lib/libstdc++.so.6
..
在Linux环境中,当出现"glibc检测到*** free():无效的指针"错误时,如何确定是哪一行代码引起的? 是否有一种方法可以强制中止?我记得有一个ENV变量来控制吗? 如何在gdb中为glibc错误设置断点? 解决方案 我相信,如果将MALLOC_CHECK_设置为2,则glibc将在检测到"free():无效指针"错误时调用abort().请注意环境变量名称中的下划
..
似乎就像我释放了由malloc()分配的Linux进程的所有内存之后, 内存仍为该进程保留,没有返回给操作系统. 默认情况下,运行valgrind massif工具不会泄漏. 使用--pages-as-heap = yes运行valgrind会显示以下内容: -> 13.77%(7,655,424B)0x35FEEEB069:brk(brk.c:31) -> 13.77%(
..
我尝试从我的汇编代码中使用printf,这是一个最小的示例,应该只将hello打印到stdout: .section .rodata hello: .ascii "hello\n\0" .section .text .globl _start _start: movq $hello, %rdi #first parameter xorl %
..
我的问题源于共享库,我没有选择重新编译该库.错误显示为undefined reference to memcpy@GLIBC_2.14. 我的计算机上的GLIBC版本是2.12.我已经看到人们使用该行在线完成的修复程序 __asm__(".symver memcpy,memcpy@GLIBC_2.2.5"); 我所做的修复是使用十六进制编辑器将2.14的引用更改为GLIBC_2.2
..
我正在使用Debian/MIPS + QEMU构建 PortFusion的MIPS端口 (TCP隧道解决方案).生成的二进制文件与GNU libc链接.因此,它们不能被复制并用于随同 uclibc 而不是 eglibc (似乎与GNU libc二进制兼容)的香草OpenWrt. 是否可以将Debian/MIPS上的Haskell/GHC二进制文件与 uclibc 而不是 eglibc 链接?
..
GNU C库提供了iconv的实现-如何使用它? 简单程序: #include int main( int argc, char **argv ) { iconv_t cd = iconv_open( "UTF-8", "ISO-8859-1" ); iconv_close( cd ); return 0; }
..
我正在尝试从php执行shell命令以将文件转换为pdf,但出现此错误. 有人可以详细解释如何解决吗? 我在linux中不太好( 而且如果我直接通过终端执行命令,一切都会正常. /usr/lib/libreoffice/program/oosplash: /opt/lampp/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not
..
我正在构建一个LFS系统(请参阅LFS 7.2) 在构建glibc-2.16.0时出现此错误: /mnt/lfs/tools/bin/../lib/gcc/i686-lfs-linux-gnu/4.7.1/../../../../i686-lfs-linux-gnu/bin/ld: cannot find -lgcc_s collect2: error: ld returned 1 e
..
这是我关于stackoverflow的第一个问题,所以我会尽力做到这一点. 上下文: 我想提供一个可以在每个Linux发行版上运行的程序(例如,一个将使用C ++ 11的程序,在没有C ++ 11库的系统上运行). 为此,我想复制程序使用的所有库,并将它们放在带有可执行文件的文件夹中,以便它可以使用这些库而不是系统的库. 我有2种环境要测试: -Opensuse,使用(GNU l
..
以下是由glibc实现的stdlib.h中的功能strtoul的描述: 功能:无符号长整数strtoul(const char *限制字符串,char **限制tailptr,int基数) 初步: MT安全区域| AS安全交流安全|请参阅POSIX安全概念. strtoul(“字符串到无符号长整数")函数类似于strtol,不同之处在于它转换为无符号long int值.语法与上述str
..
只有当指针都指向同一个聚合对象(结构,数组或指针)中时,才将指针与关系运算符(例如=或>)进行比较.联盟).实际上,这意味着在形状上进行比较 if (start_object
..
已经有一段时间了(例如,请参见此旧问题,并且当您在Google上搜索时会弹出错误报告),clock_gettime()似乎不会单调报告回时间.为了排除我可能忽略的任何愚蠢错误,以下是相关代码(摘自大型程序): long nano_1, nano_2; double delta; struct timespec tspec, *tspec_ptr; clo
..
我当前正在处理的某些程序消耗的内存比我想象的要多得多.因此,我试图了解glibc malloc修剪的工作原理.我编写了以下测试: #include #include #define NUM_CHUNKS 1000000 #define CHUNCK_SIZE 100 int main() { // disable fast bins
..
我需要使用备用glibc版本,该版本比系统上安装的版本(2.18 vs 2.15)更新.涵盖了几个相关问题 此处和我设置了新的动态链接器(ld-2.18.so)的库路径,以便在旧的libc(libc-2.15.so)之前找到新的libc(libc-2.18.so).但是,当我尝试使用新的ld运行程序时,会拾取旧版本的libc,并生成SEGV. 为什么会这样? 注意:我知道可以通过在编译时使用
..
int i; int main() { return i; } -static编译后,readelf -l显示elf的程序头: Elf file type is EXEC (Executable file) Entry point 0xxxxx30 There are 6 program headers, starting at offset 52 Program H
..