1 現象:
ImportError: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /home/qtxu/anaconda3/lib/python3.6/site-packages/scipy/sparse/_sparsetools.cpython-36m-x86_64-linux-gnu.so)
2 解決方案
以下操作需要root權限:
- 查看動態庫
strings /usr/lib64/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
發現最高版本只有1.3.7,沒有1.3.9的。說明出現這些問題,是因爲升級gcc時,生成的動態庫沒有替換老版本gcc的動態庫。
ls -l /usr/lib64/libstdc++.so.6
lrwxrwxrwx 1 root root 19 Sep 29 2019 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.19
我們發現libstdc++.so.6是個軟連接,是連接到libstdc++.so.6.0.19上的,而libstdc++.so.6.0.19是老版本的動態庫。所以下面我們要做的就是將libstdc++.so.6連接到新版本的動態庫上去。
- 執行以下命令,查找編譯gcc時生成的最新動態庫:
find / -name "libstdc++.so.*"
結果如下:其中,libstdc++.so.6.0.24·就是我們的新版本的動態庫。
/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.19
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyo
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.py
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyc
/usr/local/hostguard/lib/libstdc++.so.6
/home/qtxu/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.24
/home/qtxu/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6
/home/qtxu/anaconda3/pkgs/libstdcxx-ng-7.2.0-hdf63c60_3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.24
/home/qtxu/anaconda3/pkgs/libstdcxx-ng-7.2.0-hdf63c60_3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6
/home/qtxu/anaconda3/pkgs/libstdcxx-ng-7.2.0-hdf63c60_3/lib/libstdc++.so.6.0.24
/home/qtxu/anaconda3/pkgs/libstdcxx-ng-7.2.0-hdf63c60_3/lib/libstdc++.so.6
/home/qtxu/anaconda3/lib/libstdc++.so.6.0.24
/home/qtxu/anaconda3/lib/libstdc++.so.6
- 將上面的最新目錄複製到/usr/lib64/目錄下:
cp /home/qtxu/anaconda3/lib/libstdc++.so.6.0.24 /usr/lib64/
- 將libstdc++.so.6連接到libstdc++.so.6.0.24上去:
cd /usr/lib64
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.24 libstdc++.so.6
- 默認動態庫升級完成。重新運行以下命令檢查動態庫:
strings /usr/lib64/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_1.3.10
CXXABI_1.3.11
CXXABI_TM_1
CXXABI_FLOAT128
CXXABI_1.3
CXXABI_1.3.11
CXXABI_1.3.2
CXXABI_1.3.6
CXXABI_FLOAT128
CXXABI_1.3.9
CXXABI_1.3.1
CXXABI_1.3.5
CXXABI_1.3.8
CXXABI_1.3.4
CXXABI_TM_1
CXXABI_1.3.7
CXXABI_1.3.10
CXXABI_1.3.3
可看到確實是連接到新的動態庫1.3.11上去了。完成!
3 參考:
- 《報錯信息ImportError: /lib64/libstdc++.so.6: version `CXXABI_1.3.9’ not found (required by…)》https://blog.csdn.net/zhuiqiuzhuoyue583/article/details/80150207