在我的项目中,我需要修改glibc源代码的一些函数。我只需要修改部分pthread。例如,我在源代码中修改了多线程相关的函数,如pthread_create.c或pthread_mutex_lock.c。然后,当我的具体程序运行时,我想指定它在需要使用这些函数时使用修改后的函数,并且不会影响其他函数。另外,我不想在程序运行时指定整个版本的glibc。请问有没有好的解决方案?谢谢!Ding
这是一个共享库拦截器的工作。这里有一篇很好的文章。如果一个函数在共享库中,运行时链接器可以被指示调用另一个“拦截”函数。拦截器可以完全替换功能或增强功能。一个很好的例子是malloc函数族,一个内存泄漏检测器和堆报告工具可以基于用户程序和系统调用之间的一组拦截器。拦截器仅适用于共享(.so)库。静态(.a)库直接链接到可执行文件中,调用不能轻易地被拦截。所有主要的Linux版本都支持LD_PRELOAD功能的拦截器。 这里是一个pthread_create的示例拦截器。