gpt4 book ai didi

c++ - C/C++ 动态链接库重载

转载 作者:IT王子 更新时间:2023-10-29 00:38:48 25 4
gpt4 key购买 nike

在我的项目中,我需要修改glibc源代码的一些功能。我只需要修改 pthread 的一部分。比如我在源码中修改了pthread_create.c或者pthread_mutex_lock.c等多线程相关函数。然后,当我的具体程序运行时,我想指定它在需要使用这些功能时使用修改后的功能,并且不会影响其他功能。另外,我不想指定整个版本的glibc当程序正在运行。我需要寻求你的帮助这个问题有什么好的解决方案吗?谢谢!!叮

最佳答案

这是共享库插入器的工作。 Here是一篇优秀的文章。

如果函数在共享库中,则可以指示运行时链接器调用另一个“插入”函数。中介层可以完全取代功能,也可以增强功能。一个很好的例子是 malloc 函数系列,内存泄漏检测器和堆报告工具可以基于用户程序和系统调用之间的一组插入器。

Interposers 仅适用于共享 (.so) 库。静态 (.a) 库直接链接到可执行文件,调用不易被拦截。

Linux 的所有主要版本都支持插入 LD_PRELOAD 功能。

Here是 pthread_create 的示例插入器。

关于c++ - C/C++ 动态链接库重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39317762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com