類似問題還有 'ImportError ../lib/libstdc++.so.6: version `CXXABI_1.3.7' not found (required by xxx)'、 'ImportError ../lib/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by xxx)'等。
這種報錯情況一般出現在Anaconda環境的Python程序中,原因是Anaconda對應目錄下的“libgomp.so.1”和“libstdc++.so.6”動態庫文件(lib)中相關模塊的版本比較舊,不包含相應版本模塊導致的。
系統中動態庫存放路徑在:/usr/lib/x86_64-linux-gnu/ 或 /usr/lib/
anaconda中動態庫存放路徑是:~/anaconda2/lib
查看Linux系統動態庫文件包含的模塊版本:
strings /usr/lib/libstdc++.so.6 | grep 'CXXABI'
或者
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep 'CXXABI'
輸出:
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_1.3.8
CXXABI_1.3.9
CXXABI_TM_1
CXXABI_FLOAT128
查看anaconda路徑下動態庫文件所包含的模塊版本:
strings anaconda2/lib/libstdc++.so.6 | grep 'CXXABI'
輸出:
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_TM_1
系統目錄下的文件包含所需模塊的版本‘CXXABI_1.3.8’和‘CXXABI_1.3.9’,復制系統目錄下的動態庫文件替換掉anaconda目錄下的動態庫文件,問題就解決了。
同樣可以使用strings指令查看anaconda中和系統下libgomp.so.1文件中分別包含的版本:
strings libgomp.so.1 | grep "GOMP"
如果系統目錄lib也不包含所需模塊,可以嘗試使用以下命令更新動態庫文件:
LD_LIBRARY_PATH=/usr/local/lib64/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9
