Linux共享库:替换符号运行时

时间:2014-03-09 16:41:53

标签: c linux shared-libraries

我有一个非常大的C应用程序,由几个共享库组成。其中一个核心库有一个功能

void common_function(const char * arg) { ... }

所有其他库都调用了它。在测试期间,我想使用common_function的不同测试实现。

我的计划是创建一个包含common_function替代实现的测试库;是否可以使用common_function技巧替换默认的dlopen() / dlsym()运行时,或者是这个链接行:

gcc -o test.c -ltest -lcommon

确保在libcommon.so中也使用了libtest.so中的common_function实现 - 尽管后者拥有它自己的common_function实现。

1 个答案:

答案 0 :(得分:1)

Drepper's paper: How To Write Shared Libraries上阅读dynamic linker和wikipage。

您可能想要播放LD_PRELOAD trick(假设您的所有库都是共享的,而不是静态的。)