項目調試過程中遇到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