我有一个由多个共享库组成的相当大的 C 应用程序。其中一个核心库有一个函数
void common_function(const char * arg) { ... }
它被所有其他库调用。在测试期间,我想使用 common_function
的不同测试实现。
我的计划是创建一个测试库,其中包含 common_function
的替代实现;是否可以使用 dlopen()/dlsym()
技巧替换默认的 common_function
运行时,或者这个链接行:
gcc -o test.c -ltest -lcommon
确保 libtest.so 中的 common_function
实现也在 libcommon.so 中使用 - 尽管后者有它自己的 common_function
实现。
最佳答案
阅读Drepper's paper: How To Write Shared Libraries和维基页面 dynamic linker .
您可能想播放 LD_PRELOAD
trick (假设您所有的库都是共享的,而不是静态的)。
关于c - Linux 共享库 : replace symbol runtime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22284938/