报错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