Bsymbolic 優先使用本地符號

2022-08-20 16:15:14 字數 445 閱讀 8613

前段時間專案開發中,實現了乙個動態庫,封裝了一些方法。然後基於這個動態庫,實現了乙個應用程式。應用程式中含有全域性變數a,動態庫中也含有全域性變數a,當我呼叫動態庫中函式後,發現應用程式的a發生了變化!!!o,my god!對於我這種還沒在linux下做過開發的人來說,一頭霧水。。。。。。 於是我嘗試著,將a中的變數名稱改為b,這樣問題也就沒有了~~~

應用程式進行鏈結的時候,動態庫中全域性變數定義,將會被應用程式中同名的全域性變數所覆蓋。這樣也就造成了,在動態庫中修改a變數時,應用程式中的a也發生了變化。

在建立動態鏈結庫時,gcc/g++選項中新增編譯選項

-wl,-bsymbolic.

其中wl表示將緊跟其後的引數,傳遞給聯結器ld。bsymbolic表示強制採用本地的全域性變數定義,這樣就不會出現動態鏈結庫的全域性變數定義被應用程式/動態鏈結庫中的同名定義給覆蓋了

git本地使用

一.git簡介 特點 git 不按照以上方式對待或儲存資料.反之,git 更像是把資料看作是對小型檔案系統的一組快照。每次你提交更新,或在 git中儲存專案狀態時,它主要對當時的全部檔案製作乙個快照並儲存這個快照的索引。為了高效,如果檔案沒有修改,git不再重新儲存該檔案,而是只保留乙個鏈結指向之前...

本地使用CVS

cvs是乙個版本控制軟體,當多人共同開發同一 時,可以方便有效的控制不同開發人員的軟體版本 我個人開發 但也希望對開發進行版本控制.首先安裝cvs,設定cvs目錄,並初始化cvs sudo apt get install cvs cvsroot cvs cvs init 無論是開發新 還是修改 都可...

iOS webView 遠端h5優先載入本地資源

前言 uiwebview呼叫遠端h5頁面,優先載入本地 js css等資源,解決辦法就是對請求進行攔截。服務端 放在本文後面 客戶端需要對nsurlprotocol 的自定義類進行註冊,那麼所有的webview 對http請求都會被他攔截到 首先自定義nsurlprotocol類 import im...