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/?list_53

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

 

posted @ 2020-02-27 15:04  王纲  阅读(3647)  评论(0编辑  收藏  举报