将共享对象中的符号解析为可执行文件

时间:2014-06-03 12:19:06

标签: linux dynamic-linking

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

例如,共享对象具有

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

,可执行文件有

int a;

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

感谢。

1 个答案:

答案 0 :(得分:1)

来自dlopen手册页:

  

使用该库的依赖关系列表中的库以及之前使用RTLD_GLOBAL标志打开的任何其他库来解析库中的外部引用。如果可执行文件与标志" -rdynamic" (或者,同义地," - export-dynamic"),然后可执行文件中的全局符号也将用于解析动态加载库中的引用。

因此,使用-rdynamic重新编译主应用程序应该有帮助。