1. 程式人生 > 其它 >報錯version `GLIBCXX_3.4.26' not found解決方案

報錯version `GLIBCXX_3.4.26' not found解決方案

這條命令時,報錯,錯誤提示為

ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found 
(required by /home/usrname/anaconda3/envs/work/lib/python3.7/site-packages/SimpleITK/_SimpleITK.cpython-37m-x86_64-linux-gnu.so)

上網搜了一下,這是因為我的“/usr/lib/x86_64-linux-gnu/libstdc++.so.6”這個檔案不包含“GLIBCXX_3.4.26”,所以在使用simpleITK時報錯
使用xftp查看了一下對應目錄下的這個檔案,發現這是一個軟連結,在同級目錄下就有它指向的檔案,即libstdc++.so.6.0.25

使用

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX

這條命令查看了該檔案含有的GLIBCXX檔案,發現果然沒有GLIBCXX_3.4.26。嗯,計算機果然沒有出錯

根據網路上的參考資料,使用

find /home/usrname -name "libstdc++.so.6*"

這條命令找到所有以“libstdc++.so.6”打頭的檔案,注意這裡usrname應該是你自己在伺服器上的使用者名稱(下同)。沒有必要去找別人的檔案,因為你沒有操作別人檔案的許可權
這時候觀察找到最新的libstdc++.so.6.0.29,再看一下它有沒有需要的GLIBCXX_3.4.26檔案,使用下述命令

strings /home/usrname/anaconda3/pkgs/libstdcxx-ng-11.2.0-he4da1e4_11/lib/libstdc++.so.6.0.29 |grep GLIBCXX_3.4.26

發現果然有需要的GLIBCXX_3.4.26

如果沒有的話,就請下載最新版本的libstdc.so,可以參考
https://link.zhihu.com/?target=https%3A//www.jianshu.com/p/050b2b777b9d
但一般來說是有的,下面只需要把"/usr/lib/x86_64-linux-gnu/libstdc++.so.6"這個軟連結指向最新的libstdc++.so.6.0.29
首先把libstdc++.so.6.0.29複製到/usr/lib/x86_64-linux-gnu/目錄下,需要sudo許可權

sudo cp /home/usrname/anaconda3/envs/work/lib/libstdc++.so.6.0.29 /usr/lib/x86_64-linux-gnu/


此時用cd命令切換到/usr/lib/x86_64-linux-gnu/目錄(後面操作都在這個目錄下),發現如果直接建立新的軟連結,會提示檔案已存在
因此應該刪掉原有軟連結,這也需要sudo許可權

sudo rm -rf ./libstdc++.so.6

然後建立新的軟連結,也需要sudo許可權

 sudo ln -s ./libstdc++.so.6.0.29 ./libstdc++.so.6

問題解決
參考連結
https://zhuanlan.zhihu.com/p/450791153