标签: c++ c linux shared-libraries glibc
在我的项目中,我需要修改glibc源代码的一些功能。 我只需要修改部分pthread。例如,我在源代码中修改了多线程相关函数,如pthread_create.c或pthread_mutex_lock.c。然后,当我的具体程序运行时,我想指定它在需要使用这些函数时使用修改后的函数,并且它不会影响其他函数。另外,我不想指定整个版本的glibc时程序正在运行。 我需要请求您的帮助是否有任何解决此问题的好方法? 谢谢!! 丁
答案 0 :(得分:1)
这是共享库插入器的工作。 Here是一篇很棒的文章。
如果函数在共享库中,则可以指示运行时链接程序调用另一个“插入”函数。插入器可以完全取代功能,也可以增加功能。一个很好的例子是malloc系列函数,内存泄漏检测器和堆报告工具可以基于用户程序和系统调用之间的一组插入器。
插入器仅适用于共享(.so)库。静态(.a)库直接链接到可执行文件,并且调用不容易被截获。
Linux的所有主要版本都支持LD_PRELOAD功能的插入。
Here是pthread_create的示例插入器。