动态加载和符号共享
我正在尝试通过 dl 加载模块库,以便模块可以从主应用程序访问全局变量。这怎么可能呢?
我从 dlopen 收到一条错误消息,内容为 library/name.so: undefined symbol: ...
。使用的唯一标志是:RTLD_NOW
。
模块本身是使用 libtool 和 -module -avoid-version
构建的。
I'm trying to load a module library via dl
in such way, that the module can access globals from the main application. How is that possible to do?
I get an error message from dlopen saying library/name.so: undefined symbol: ...
. The only flag used is: RTLD_NOW
.
The module itself is build with libtool with -module -avoid-version
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
答案是:在链接主二进制文件时使用
-Wl,--export-dynamic
,因此所有符号都会自动导出到加载的库中。同样的问题,只是问得不同:使用 dlopen 加载库时收到“未定义符号”错误
The answer is: use
-Wl,--export-dynamic
when linking the main binary, so all symbols are automatically exported to the loaded libraries.Same question, just asked differently: Receive "undefined symbol" error when loading library with dlopen