glibc相关内容

如何为旧的 linux 发行版构建应用程序,并避免 FATAL: kernel too old 错误?

我在 linux 上分发了我的应用程序的静态链接二进制版本.但是,在使用 2.4 内核的系统上,我在启动时遇到段错误,并显示消息:“致命:内核太旧." 如何轻松地启动并运行带有 2.4 内核的版本?我需要的一些库甚至在 2003 年左右的旧 linux 发行版上都不可用.是否有 apt-get 安装或可以让我轻松定位旧内核的东西? 解决方案 最简单的方法就是安装 VirtualBox ..
发布时间:2022-01-04 22:35:28 服务器开发

glibc: elf 文件 OS ABI 无效

下载并编译 glibc-2.13.当我尝试运行一个执行 malloc() 的示例 C 程序时.我收到以下错误elf 文件 OS ABI 无效 任何人都可以通过我的任何有助于解决此问题的指针.请注意我的内核版本是 linux-2.6.35.9 解决方案 问题不是你的内核版本. 您系统上的加载程序不支持新的 Linux ABI.直到最近,Linux ELF 二进制文件才使用 Sys ..
发布时间:2022-01-04 22:15:51 服务器开发

printf 减慢了我的程序

我有一个小的 C 程序来计算哈希(用于哈希表).我希望代码看起来很干净,但有一些与它无关的东西困扰着我. 我可以在大约 0.2-0.3 秒内轻松生成大约一百万个哈希值(以/usr/bin/time 为基准).但是,当我在 for 循环中 printf() 调用它们时,程序会减慢到大约 5 秒. 这是为什么? 如何让它更快?mmapp() 可能是标准输出? stdlibc 在这方面是 ..
发布时间:2022-01-04 22:15:28 其他开发

如何使用 getaddrinfo_a 与 glibc 进行异步解析

一个经常被忽视的函数,不需要外部库,但基本上没有任何文档. 解决方案 UPDATE (2010-10-11):Linux 手册页现在有 getaddrinfo_a 的文档,你可以在这里找到: http://www.kernel.org/doc/man-pages/online/pages/man3/getaddrinfo_a.3.html 作为免责声明,我应该补充一点,我对 C 很陌 ..
发布时间:2022-01-04 14:34:32 其他开发

glibc 应用程序保留未使用的内存直到退出之前

我有一个在 Linux (Centos 7) 上运行的 C++ 应用程序(gcc 4.9.1、glibc 2.17).它使用各种第三方库,尤其是 Boost 1.61.随着应用程序的运行,我可以通过 htop 的 VIRT 和 RES 列或 ps 命令等.如果我让它运行的时间足够长,它将使用大量的内存并淹没整个盒子. 听起来像是泄漏,但它通过了 valgrind 并且只泄漏了几个字节,所有这 ..
发布时间:2021-12-31 08:20:44 服务器开发

如何在“检测到 glibc *** free(): 无效指针"上强制中止

在 Linux 环境中,当收到“glibc detected *** free(): invalid pointer"错误时,我如何识别是哪一行代码导致的? 有没有办法强制中止?我记得有一个 ENV 变量来控制这个? 如何在 gdb 中为 glibc 错误设置断点? 解决方案 我相信如果你将 env MALLOC_CHECK_ 设置为 2,glibc 会在检测到“free(): ..
发布时间:2021-12-24 17:06:01 服务器开发

标准 C 库是否提供链表等数据结构?

执行标准 C 库实现,尤其是 glibc(GNU C 库)提供链表、堆栈等.数据结构,还是我们必须自己推出? 谢谢. 解决方案 C 标准不提供链表和堆栈等数据结构.一些编译器实现可能提供它们自己的版本,但它们的用法在不同的编译器之间是不可移植的. 所以是的,您必须自己编写. ..
发布时间:2021-12-22 08:28:32 其他开发

什么是 glibc free/malloc/realloc invalid next size/invalid pointer error 以及如何修复它?

您很可能会看到此问题,因为您的问题已作为此问题的副本关闭.有关中等完整的相关问题列表,请参阅 Meta Stack Overflow 上的一长串可能的重复项——C 内存分配和溢出边界. 示例问题 来自免费字符*:下一个尺寸无效(快速) 由 noobie 于 2014 年 4 月 11 日询问. 我在连接过程后释放 char*,但收到此错误: free(): 无效的下一个尺寸 ( ..
发布时间:2021-12-21 09:58:08 C/C++开发

为什么glibc的strlen需要这么复杂才能快速运行?

我正在查看 strlen 代码 这里 我想知道代码中使用的优化是否真的需要?例如,为什么像下面这样的东西不能同样好或更好? unsigned long strlen(char s[]) {无符号长我;for (i = 0; s[i] != '\0'; i++)继续;返回我;} 更简单的代码不是更好和/或更容易让编译器优化吗? 链接后面页面的strlen代码如下: /* 版权所有 (C) ..
发布时间:2021-12-20 15:40:19 其他开发

检查特定 gcc 编译器的 glibc 版本

我的系统上安装了两个 gcc 编译器,一个是 gcc 4.1.2(默认),另一个是 gcc 4.4.4.我如何检查 gcc 4.4.4 使用的 libc 版本,因为 /lib/libc.so.6 显示了 gcc 4.1.2,因为它是默认编译器. 解决方案 编写一个测试程序(以glibc-version.c为例): #include #include #include int main(i ..
发布时间:2021-12-18 23:18:46 其他开发

直接与 ld 链接 C 程序失败,未定义对 `__libc_csu_fini` 的引用

我正在尝试在 Linux 下编译 C 程序.但是,出于好奇,我正在尝试手动执行一些步骤:我使用: 生成汇编代码的 gcc 前端 然后运行 ​​GNU 汇编程序以获取目标文件 然后将其与 C 运行时链接以获取可运行的可执行文件. 现在我被链接部分困住了. 该程序是一个非常基本的“Hello world": #include int main() {printf("你好\n") ..
发布时间:2021-12-18 23:16:33 其他开发

使用 -static-libgcc -static-libstdc++ 编译仍然会导致对 libc.so 的动态依赖

我正在尝试制作一个尽可能可移植的可执行文件.删除一些依赖项后,我在另一个系统上运行二进制文件时遇到了以下问题: /lib/x86_64-linux-gnu/libm.so.6:找不到版本`GLIBC_2.15'(foob需要)/lib/x86_64-linux-gnu/libc.so.6:未找到版本“GLIBC_2.15"(由 fob 要求)/lib/x86_64-linux-gnu/libc. ..
发布时间:2021-12-18 23:13:39 C/C++开发

如何从源代码编译我自己的 glibc C 标准库并使用它?

我正在尝试编译我自己的 glibc.我有一个目录 glibc,其中包含我从 Internet 下载的 glibc 源代码.我从那个目录输入 mkdir ../build-glibc.现在从 build-glibc 目录我输入 ../glibc/configure,它执行配置.现在我不确定如何调用 make.我不能从 glibc 目录调用它,因为它没有配置集,我也不能从 build-glibc 调用 ..
发布时间:2021-12-18 23:07:37 服务器开发

Linux 静态链接已死?

事实上,Linux 上的 -static gcc 标志现在不起作用.让我引用 GNU libc 常见问题解答: 2.22.即使是静态链接的程序也需要一些共享库这对我来说是不可接受的.什么我可以吗? {AJ} NSS(有关详细信息,只需键入 `infolibc "Name Service Switch"') 不会无需共享即可正常工作图书馆.NSS 允许使用不同的服务(例如 NIS、文件、 ..
发布时间:2021-12-18 22:56:00 服务器开发

%ms 和 %s scanf 之间的差异

阅读 scanf 手册我遇到了这一行: 一个可选的“m"字符.这与字符串转换一起使用(%s, %c, %[), 有人可以用简单的例子来解释它,说明在某些情况下这种选项的区别和需要吗? 解决方案 C 标准没有在 scanf() 格式中定义这样的可选字符. GNU lib C 确实以这种方式定义了一个可选的 a 指示符(来自 scanf 的手册页): 一个可选的 a 字 ..
发布时间:2021-12-18 22:54:51 其他开发

不使用 libc 编译

我想在没有 (g)libc 的情况下编译我的 C 代码.如何停用它以及哪些功能依赖于它? 我试过 -nostdlib 但它没有帮助:代码是可编译和运行的,但我仍然可以在我的可执行文件的十六进制转储中找到 libc 的名称. 解决方案 如果你用 -nostdlib 编译你的代码,你将无法调用任何 C 库函数(当然),但你也没有得到常规的 C 引导代码.特别是,Linux 上程序的真正入 ..
发布时间:2021-12-18 22:51:29 其他开发

在 C 代码中使用 C++ 库

我有一个 C++ 库,它提供了各种用于管理数据的类.我有库的源代码. 我想扩展 C++ API 以支持 C 函数调用,以便库可以同时与 C 代码和 C++ 代码一起使用. 我使用的是 GNU 工具链(gcc、glibc 等),因此语言和架构支持不是问题. 是否有任何理由说明这在技术上是不可能的? 是否有任何问题需要我注意? 是否有与此相关的资源、示例代码和/或文档? ..
发布时间:2021-12-18 22:31:30 C/C++开发

写入关闭的本地 TCP 套接字不会失败

我的套接字似乎有问题.下面,您将看到一些分叉服务器和客户端的代码.服务器打开一个 TCP 套接字,客户端连接到它然后关闭它.睡眠用于协调时间.在客户端 close() 之后,服务器尝试 write() 到它自己的 TCP 连接端.根据 write(2) 手册页,这 应该 给我一个 SIGPIPE 和一个 EPIPE errno.但是,我没有看到这一点.从服务器的角度来看,写入本地关闭的套接字成功, ..
发布时间:2021-12-11 11:18:12 服务器开发