Questions tagged «libc»

4
如何链接到特定的glibc版本?
当我在Ubuntu Lucid 10.04 PC上编译某些东西时,它会与glibc链接。Lucid使用glibc 2.11。当我在具有旧版glibc的另一台PC上运行此二进制文件时,该命令失败,提示没有glibc 2.11 ... 据我所知,glibc使用符号版本控制。我可以强制gcc链接到特定的符号版本吗? 在我的具体用法中,我尝试为ARM编译gcc跨工具链。
110 linux  gcc  linker  glibc  libc 


7
fread / fwrite以大小和数量为参数的基本原理是什么?
我们在这里讨论了为什么fread和fwrite占用每个成员的大小,然后计数并返回读取/写入的成员数,而不仅仅是获取缓冲区和大小。我们能想到的唯一用途是,如果您想读/写一个数组数组,这些数组不能被平台对齐均匀地整除,因此已经被填充了,但是不能如此普遍以至于不能保证这种选择在设计中。 从FREAD(3): 函数fread()从stream指向的流中读取每个长度为字节大小的nmemb数据元素,并将它们存储在ptr给定的位置。 函数fwrite()将每个长度为字节的nmemb数据元素写入stream指向的流,并从ptr给定的位置获取它们。 fread()和fwrite()返回成功读取或写入的项目数(即,不是字符数)。如果发生错误或到达文件末尾,则返回值是短项计数(或零)。
96 c  libc 

5
snprintf()总是终止为null吗?
snprintf是否始终为null终止目标缓冲区? 换句话说,这是否足够: char dst[10]; snprintf(dst, sizeof (dst), "blah %s", somestr); 还是如果somestr足够长,您必须这样做吗? char dst[10]; somestr[sizeof (dst) - 1] = '\0'; snprintf(dst, sizeof (dst) - 1, "blah %s", somestr); 我对标准所说的内容以及某些流行的libc可能做什么(这不是标准行为)都感兴趣。
82 c  posix  libc 

4
链接到旧版本的libc以提供更大的应用程序覆盖率
Linux二进制文件通常动态链接到核心系统库(libc)。这样可使二进制文件的内存占用保持很小,但是依赖于最新库的二进制文件将无法在较旧的系统上运行。相反,链接到较旧库的二进制文件将在最新系统上愉快地运行。 因此,为了确保我们的应用程序在分发期间具有良好的覆盖范围,我们需要找出我们可以支持的最旧的libc并将其链接到该二进制文件。 我们应该如何确定可以链接到的最旧版本的libc?
70 linux  linker  libc 

1
为什么即使ASLR开启,__ libc_start_main的地址在GDB中也总是相同的?
Breakpoint 1, 0x00007ffff7de8060 in __libc_start_main () from /usr/lib/libc.so.6 (gdb) r The program being debugged has been started already. Start it from the beginning? (y or n) y Starting program: /home/firstlove/projects/org-ioslide/example/a.out Breakpoint 1, 0x00007ffff7de8060 in __libc_start_main () from /usr/lib/libc.so.6 (gdb) r The program being debugged has been started already. Start it …
16 c  linux  gdb  libc  aslr 

5
缺少inotify事件(在.git目录中)
我正在使用inotify事件(恰好发生在Python中,调用libc)来监视文件中的更改。 对于a期间的某些文件git clone,我看到了一些奇怪的事情:我看到一个IN_CREATE事件,并且通过ls它看到该文件包含内容,但是,我从未看到IN_MODIFY或IN_CLOSE_WRITE。因为我要IN_CLOSE_WRITE对文件做出响应,这导致了我的问题:具体来说,是启动文件内容的上载。 行为异常的文件位于.git/objects/pack目录中,并以.pack或结尾.idx。git创建的其他文件具有更规则的IN_CREATE-> IN_MODIFY-> IN_CLOSE_WRITE链(我不在监视IN_OPEN事件)。 这是在MacOS上的docker内部,但是我已经看到在远程系统上的Linux上的docker上有相同的证据,因此我怀疑MacOS方面是不相关的。如果正在观看并且git clone在同一个 Docker容器中,我会看到这个。 我的问题: 为什么这些文件上缺少这些事件? 该怎么办?具体来说,我该如何回应对这些文件的写入完成?注意:理想情况下,我想在“完成”书写时做出响应,以避免不必要地/(不正确地)上传“未完成”的书写。 编辑:阅读https://developer.ibm.com/tutorials/l-inotify/看来我所看到的与 一个单独的临时文件,其名称如tmp_pack_hBV4Alz,正在创建,修改和关闭; 将以最终名称创建到该文件的硬链接.pack; 原始tmp_pack_hBV4Alz名称被删除。 我认为我的问题是尝试使用inotify作为上载文件的触发器,然后简化为注意到该.pack文件是与另一个文件的硬链接,并且在这种情况下上载?
11 linux  git  docker  libc  inotify 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.