我有兩個版本之間隱式的LIBRARY_PATH修改g ++(g++ -v
給出此信息)的問題。我將LIBRARY_PATH設置爲具有自定義庫的單個本地目錄。然而,事實證明,只有一個版本的g ++(讓我們稱之爲版本A)正確鏈接,另一個(版本B)鏈接到系統默認的,這是不希望的。顯然,目錄的順序混淆了,我的規範沒有得到適當的尊重。這與LIBRARY_PATH not used before /usr/lib anymore in gcc 4.2 and later?類似,但不適用於這些版本。解碼gcc規範文件行
不知何故,我來看看兩個不同版本的規格文件(通過g++ -dumpspecs > specs
獲得)。然後我試着看看用另一個版本(A)的規格文件運行g ++(B;它產生* un *期望的修改)版本是否仍然會產生這種修改,並且爲了我的安慰,LIBRARY_PATH現在完全與我期待它(匹配版本A)!
我進一步追查下來這個奇怪的修改的地方在下面一行發生:
. !m64 !m32;.:../lib64 m64 !m32;.:../lib32 !m64 m32;
而且出現影響LIBRARY_PATH的設置/修改,我黯然不知道什麼這行的意思。 因此,我希望你們中的一些人能夠「解密」這一行並解釋它的含義,以便我可以根據我的要求嘗試修改它。
謝謝!
非常感謝,這可能證明非常有幫助。 g ++ ver。 A實際上是Debian提供的全系統編譯器。另一個版本(版本B)附帶一個名爲easybuild的系統,該系統用於管理多用戶系統上的安裝和版本處理(潛在的顯着不同的工具和版本需求)。我認爲整體設置是非常特定的這個網站,因此我不想在那裏詳細說明。我不想使用「-L」,因爲這必須明確設置(根據定義),我認爲使用「LIBRARY_PATH」將是一個通用的透明解決方案,以保證「安全」的默認鏈接。 – Shadow 2012-07-30 06:38:18
Debian提供的GCC使用修改其庫搜索路徑的補丁構建,例如, http://anonscm.debian.org/viewvc/gcccvs/branches/sid/gcc-4.6/debian/patches/gcc-multiarch.diff?revision=5904&view=markup and http://anonscm.debian.org/viewvc/ gcccvs /支鏈/ SID/GCC-4.6 /的Debian /補丁/ GCC-multilib64.diff?修訂= 4969&視圖=標記 – 2012-07-30 07:16:38