1
我在linux可执行 - exe
的dlopen()。所以,没有找到符号在剥离可执行
该可执行文件中有一些功能,即在整个代码中使用:
sendMsg
debugPrint
那么我想动态加载.so
,可提供额外的功能ity到我的可执行文件。
在此共享库中,我包含了sendMsg
和debugPrint
的标头。
我使用dlopen()
加载这个共享库并使用dlsym()
创建一个API。
但是,在dlopen()
我使用RTLD_NOW
在加载时解析所有符号。
它失败,说明它找不到sendMsg
符号。
此符号必须在可执行文件中,因为sendMsg.c
在那里编译。
但是,我的可执行文件被make
进程剥离。因此,dlopen
找不到符号是有意义的。
我该如何解决这种情况?
- 我可以建立共享的功能集成到一个静态库和静态库链接到两个
exe
和.so
。这将增加代码尺寸:( - 我可以删除
exe
这样的符号,可以发现 - 做一些编译时链接的魔法,我不知道这样的
.so
知道哪里的符号是exe
的剥离
http://stackoverflow.com/questions/480617/dlopen-issue 二手动态,这是平台无关的。 感谢虽然,第一次动态链接在Linux上。 – 2011-05-25 09:25:32