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