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

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

  项目调试过程中遇到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 ,1038388075或者QQ3501870

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值