2016-04-02 61 views
2

運行我的程序時,我收到以下錯誤:程序查找的libstdC++在錯誤的地方so.6,似乎忽略LD_LIBRARY_PATH

/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ... 

我知道/usr/lib64/libstdc++.so.6是錯誤的版本,所以我加路徑正確版本LD_LIBRARY_PATH

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gcc-4.8.3/lib 

命令:

strings /usr/local/gcc-4.8.3/lib/libstdc++.so.6 | grep GLIBCXX 

給我:

GLIBCXX_3.4 
GLIBCXX_3.4.1 
GLIBCXX_3.4.2 
GLIBCXX_3.4.3 
GLIBCXX_3.4.4 
GLIBCXX_3.4.5 
GLIBCXX_3.4.6 
GLIBCXX_3.4.7 
GLIBCXX_3.4.8 
GLIBCXX_3.4.9 
GLIBCXX_3.4.10 
GLIBCXX_3.4.11 
GLIBCXX_3.4.12 
GLIBCXX_3.4.13 
GLIBCXX_3.4.14 
GLIBCXX_3.4.15 
GLIBCXX_3.4.16 
GLIBCXX_3.4.17 
GLIBCXX_3.4.18 
GLIBCXX_3.4.19 
GLIBCXX_FORCE_NEW 
GLIBCXX_DEBUG_MESSAGE_LENGTH 

然而,錯誤仍然存​​在,因爲如果程序不看我加入到LD_LIBRARY_PATH新版本。有關可能發生什麼的任何建議?

+0

你可以發佈ldd的輸出嗎? –

+0

當然,LDD是什麼? – user6130052

+0

ldd您的二進制文件 –

回答

0

您遇到的問題是由於您已經識別鏈接到錯誤的listdC++庫而導致的。您僅導出32位的libstdC++,而不是64位的導出。

嘗試增加包含在lib64libstdc++

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gcc-4.8.3/lib:/usr/local/gcc-4.8.3/lib64 

確保LD_LBRARY_PATH設置正確之前,你的代碼被編譯。要檢查二進制文件是否與正確的libstdc++鏈接,可以使用ldd。正確的輸出應包含以下行:

/lib/usr/local/gcc-4.8.3/lib64/libstdc++.so.6 
+0

謝謝,添加/usr/local/gcc-4.8.3/lib64到LD_LIBRARY_PATH解決了我的問題 – user6130052

+0

不客氣。 –

相關問題