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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM