c - Linux 共享库 : replace symbol runtime

标签 c linux shared-libraries

我有一个由多个共享库组成的相当大的 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/

相关文章:

c - 以下陈述有什么区别

linux - Tails 安装程序包丢失了吗?

Linux:如何检查进程可用的最大连续地址范围

c++ - 同一系统上的定制和默认 boost 库

c++ - cmake在ubuntu上链接共享库

将十进制数转换为二进制数

c++ - 在 C/C++ 中联网?

c - 设置一个指针,保留NULL

linux - 通过 ssh 在没有窗口的情况下在服务器上运行 OpenGL 程序

c - 如何在可能已依赖于 SDL 的程序使用的库中初始化 SDL?