glibc相关内容

使用动态链接器包装glibc函数

我正在尝试通过将我的库注入可执行文件来包装GLIBC fstat 函数(可能是其他函数:这只是概念证明).为此,我将库放置在可执行文件的 RPATH 指向名称为 libc.so.6 的位置. 我的库的源代码如下: #define _GNU_SOURCE#include#include#include#include ..
发布时间:2021-05-03 19:04:03 其他开发

如何使用平台无关的方法在C中获取执行程序的目录?

我在Linux上同时针对unix和win32(在每个构建中交叉编译)平台开发了我的应用程序,因此随时可用的功能就不错了:).我正在使用具有 gchar * g_get_current_dir(void)函数的glib,它返回当前目录,但是我真正需要的是可执行文件的目录.我没有C编程经验,所以欢迎您提出任何建议. 解决方案 在Unix下,例如具有/proc 目录的操作系统,您可以 readl ..
发布时间:2021-04-25 18:38:22 其他开发

使用调试符号从源代码编译glibc

我需要使用调试符号从源代码编译glibc. 1.在哪里为此指定"-g"选项 2.以后我如何使示例代码链接到此特定的glibc,而不是系统上安装的glibc? 解决方案 我需要使用调试符号从源代码编译glibc 您将很难编译没有调试符号的glibc .默认的 ./configure&&make 将在编译行上具有 -g . 以后我如何使示例代码链接到此特定的glib ..
发布时间:2021-04-23 19:56:31 服务器开发

Fedora 28/GLIBC 2.27 libm.so.6 logf()和powf()c ++

正如我确定其他Fedora 28用户会知道的那样,该操作系统的glibc最近已更新为glibc 2.27.除其他事项外,2.27添加了logf()和powf()的新实现.这导致我的应用程序无法在具有较旧glibc(例如Debian)的发行版上运行.在Debian上调用应用程序时,会产生以下错误: 找不到 ... libm.so.6版本 GLIBC-2.27 (由./app_name要求) ..
发布时间:2021-04-20 18:37:45 服务器开发

如何将c/c ++应用程序移植到旧版Linux内核版本

好吧,这只是一个有趣的练习,但是对于某些较旧的linux系统来说,编译程序不是太难吗? 我可以访问几个都运行linux的古老系统,也许很有趣的是看看它们在负载下的性能如何.举个例子,我们想使用 Eigen 做一些线性代数,这是一个不错的仅标头库.有机会在目标系统上进行编译吗? user @ ancient:〜$ uname -aLinux local 2.2.16#5 Sat Jul 8 ..
发布时间:2021-04-19 21:05:05 服务器开发

Yocto Bitbake Glibc构建失败

我正在尝试构建Yocto映像,但是在编译glibc时构建失败. 如果我只是跑步 bitbake glibc -c编译 出现如下编译错误: /usr/src/debug/glibc/2.27-r0/git/nptl/pthread_atfork.c:51:对__dso_handle的未定义引用|/media/g/01D476BE2E4F26B0/AT91/SAMA5D27_SOM1/ ..
发布时间:2021-04-15 19:51:03 服务器开发

pread和pwrite未定义?

我正在尝试使用pread和pwrite,以便可以查找文件的开头并开始在一个原子操作中进行读取或写入.这两个函数都会为我做到这一点,但是,我遇到的问题是,即使我添加了 #define _XOPEN_SOURCE 500,编译器也向我发出警告:函数"pread"的隐式声明和#include 就像手册页中所说的那样.我想念什么吗?下面是带有函数调用的两个语句.谢谢! #inclu ..
发布时间:2021-04-12 19:21:49 服务器开发

在组装中使用printf会导致管道连接时输出为空,但可在终端上使用

我尝试从我的汇编代码中使用 printf ,这是一个最小的示例,应该只将 hello 打印到stdout: .section .rodata你好:.ascii"hello \ n \ 0&".section .text.globl _开始_开始:movq $ hello,%rdi#第一个参数xorl%eax,%eax#0-使用的向量寄存器的数量致电printf#出口movq $ 60,%rax ..
发布时间:2021-04-11 20:52:22 服务器开发

查找连接的插座使用的接口

我需要找到套接字使用的特定接口,以便可以使用sysfs文件(/sys/class/net//statistics/etc)保留其统计信息. 我在下面的测试代码中尝试了两种不同的方法,但是都失败了.第一个连接到远程服务器,并且将ioctl与SIOCGIFNAME一起使用,但是由于“没有这样的设备"而失败.相反,第二个将getsockopt与SO_BINDTODEVICE结合使用,但这又 ..
发布时间:2020-11-16 00:07:22 服务器开发

在sudo下运行时如何从C获取loggin用户

我正在编写一个将在sudo下运行的C应用程序. 我需要获取原始登录用户的UID. 我正在调用getuid,文档说明该状态将返回真实的UID. 我假设这将是登录用户的UID,但它返回的是0,这是根UID. 是否有一个api调用,可以让我获取登录用户的UID. 我知道SUDO_UID,但希望避免使用环境变量(或者我只是感到困难). 解决方案 这是我的解决方案,不使 ..
发布时间:2020-11-16 00:07:17 服务器开发

如何在glibc中修改malloc行为并测试其是否按预期工作?

我想使用malloc分配内存,但是我不想在malloc中使用动态分配方式.相反,我想使用malloc分配一个大的块/池,以便我可以“新建"一个块/池.一些变量/对象进入这个大内存块/池.因此,我想修改glibc中的malloc源代码(例如malloc/malloc.c)以使其适合我的方案. 修改glibc源代码并测试其功能的最便捷,最有效的方法是什么?我想到的一种方法是下载glibc源代码, ..
发布时间:2020-11-16 00:07:13 服务器开发

glibc backtrace()如何确定返回地址是哪个堆栈内存?

就程序而言,堆栈只是一堆内存. backtrace函数如何确定哪些堆栈字节是指令指针的返回地址,而不是那些仅是函数参数的地址,等等? 解决方案 就程序而言,堆栈只是一堆内存. 那是正确的.如果您对程序的结构一无所知,则将无法解开其堆栈. 最容易用于展开的结构是其中单个“帧指针"被展开的结构.保留寄存器以始终指向当前帧,并且该帧在已知偏移处包含上一个帧指针. 这是在i* ..
发布时间:2020-11-16 00:06:04 其他开发

在Ubuntu 12.04中安装glibc2.16

我正在使用Ubuntu 12.04,我尝试运行的二进制文件需要glibc2.16,我尝试使用apt-get install libc6更新glibc,但仅安装了glibc2.15,有人可以建议我如何在其中获取glibc 2.16.我的机器. 很抱歉,这个问题不属于这里,但我找不到任何资源. 解决方案 您需要升级到较新的Ubuntu版本,或重新编译当前需要专门用于Ubuntu 12.0 ..
发布时间:2020-11-16 00:05:58 其他开发

容器问题:***检测到glibc *** free():无效的指针:0x41e0ce94 ***

我在Linux上有一个C ++程序,经过一段时间后出现以下消息,该程序崩溃了: *** glibc detected *** free(): invalid pointer: 0x41e0ce94 *** 在程序内部,我大量使用了容器.它们必须存储简单类的对象. 编辑 2009-4-17: 同时,很明显该错误与简单类无关.如果我更改容器以容纳其他数据类型,仍然会发生错误.问题 ..
发布时间:2020-11-16 00:05:56 C/C++开发

更新glibc之后:分段错误(核心已转储)

我一直在使用centos 6.5.然后,我用yum更新了我的glibc. yum update glibc 我发现我的"yum"命令以及我的"python"命令将引发以下错误: 我已经厌倦了其他shell命令,例如:ls ll ln rm mv等.这些命令正常工作.当我检查我的libc链接时,结果如下: 此外,我尝试使用来打印我的libz配置 ldconfig -v|grep li ..
发布时间:2020-11-16 00:04:53 服务器开发