我有一个非常大的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
实现。
答案 0 :(得分:1)
在Drepper's paper: How To Write Shared Libraries上阅读dynamic linker和wikipage。
您可能想要播放LD_PRELOAD
trick(假设您的所有库都是共享的,而不是静态的。)