-Bsymbolic:优先使用本地符号
生活随笔
收集整理的這篇文章主要介紹了
-Bsymbolic:优先使用本地符号
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
問題描述
前段時間項目開發(fā)中,實現(xiàn)了一個動態(tài)庫,封裝了一些方法。然后基于這個動態(tài)庫,實現(xiàn)了一個應用程序。應用程序中含有全局變量A,動態(tài)庫中也含有全局變量A,當我調(diào)用動態(tài)庫中函數(shù)后,發(fā)現(xiàn)應用程序的A發(fā)生了變化!!!O,My God!對于我這種還沒在Linux下做過開發(fā)的人來說,一頭霧水。。。。。。 于是我嘗試著,將A中的變量名稱改為B,這樣問題也就沒有了~~~
原因
應用程序進行鏈接的時候,動態(tài)庫中全局變量定義,將會被應用程序中同名的全局變量所覆蓋。這樣也就造成了,在動態(tài)庫中修改A變量時,應用程序中的A也發(fā)生了變化。
解決方法
在創(chuàng)建動態(tài)鏈接庫時,gcc/g++選項中添加編譯選項
-Wl,-Bsymbolic.
其中Wl表示將緊跟其后的參數(shù),傳遞給連接器ld。Bsymbolic表示強制采用本地的全局變量定義,這樣就不會出現(xiàn)動態(tài)鏈接庫的全局變量定義被應用程序/動態(tài)鏈接庫中的同名定義給覆蓋了
?
總結(jié)
以上是生活随笔為你收集整理的-Bsymbolic:优先使用本地符号的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javascript对页面简单的加密和解
- 下一篇: bat/cmd将命令执行的结果赋值给变量