首页 > 系统服务 > 详细

Linux环境下 动态库so 中全局变量冲突问题

时间:2020-02-27 16:32:34      阅读:504      评论:0      收藏:0      [点我收藏+]

     项目调试过程中遇到Linux环境下动态库so中全局变量相互冲突问题,问题具体描述如下:

单个进程 A运行时需要加载两个动态库B.so与C.so ,这两个动态库均链接了静态库D.a。静态库

D.a存在全局变量且只能初始化一次。进程A加载B.so 正常,加载C.so 提示D.a 初始化失败。

失败的原因是C.so 使用B.so连接的D.a中全局变量。解决的办法是编译生成B.so与

C.so 时加上编译 选项 -Wl,-Bsymbolic  Bsymbolic表示强制采用本地的全局变量定义,这样就

不会出现动态链接库的全局变量定义被应用程序/动态链接库中的同名定义给覆盖了。

如需交流可加QQ群766718184 或者QQ3501870

视频下载地址:http://www.chungen90.com/?news_3/

 Demo下载地址: http://www.chungen90.com/?news_2

 

Linux环境下 动态库so 中全局变量冲突问题

原文:https://www.cnblogs.com/wanggang123/p/12372233.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!