2014-11-02 82 views
0

在我嘗試運行時,我在同一臺機器上編譯,鏈接和運行的程序有可能出現GLIBCXX版本錯誤,這怎麼可能?有人知道嗎?運行在同一臺機器上編譯的程序時,GLIBCXX版本錯誤

這裏是我得到的錯誤:

0.01s$ build/test/gamgee_test 
build/test/gamgee_test: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by build/test/gamgee_test) 
build/test/gamgee_test: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by build/test/gamgee_test) 

全輸出(帶有詳細= 1),包括建設和運行是在這裏: https://travis-ci.org/broadinstitute/gamgee/jobs/39751787

這是以前沒有發生的事情,只有經過我切換到cmake。同樣的代碼與Clang一起運行良好(使用捆綁版本的libstdC++,因爲我沒有在VM上安裝libC++)。該日誌在這裏:https://travis-ci.org/broadinstitute/gamgee/jobs/39751786

非常困惑。

回答

1

運行時路徑與編譯路徑不同。聽起來就像你的系統上有多個版本的庫。檢查你的LD_LIBRARY_PATH env變量,並用ldd調用你的可執行文件來查看它正在使用/試圖使用的庫。

+0

我該如何檢查運行時並明確編譯庫路徑?我認爲'ld --verbose | grep SEARCH'告訴我編譯和運行時的搜索路徑。 – Carneiro 2014-11-02 15:27:32

+0

你說得對,從gcc 4.6安裝了第二個libstdC++。經過多番調整,我可以通過從/ usr/lib64鏈接來替換4.9.1 stdlibC++。這是我可以欺騙travis的唯一方式(因爲我無法將/ usr/lib64添加到ld.so.conf中)。 – Carneiro 2014-11-02 16:46:27

相關問題