如何生成动态加载共享对象并将其未定义符号解析为可执行文件本身的可执行文件?在Linux上。
例如,共享对象具有

extern int a;
void f() { a=1; }

可执行文件有
int a;

我想从可执行文件中调用f(),并更改a的值。
谢谢。

最佳答案

dlopen手册页:
库中的外部引用使用该库的依赖项列表中的库以及以前使用RTLD_GLOBAL标志打开的任何其他库进行解析。如果可执行文件与标记“-rdynamic”(或同义词“-export dynamic”)链接,则可执行文件中的全局符号也将用于解析动态加载库中的引用。
所以用-rdynamic重新编译主应用程序应该会有帮助。

关于linux - 将共享库中的符号解析为可执行文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24015025/

10-11 22:49