报错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
image
使用

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

这条命令查看了该文件含有的GLIBCXX文件,发现果然没有GLIBCXX_3.4.26。嗯,计算机果然没有出错
image
根据网络上的参考资料,使用

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
image
如果没有的话,就请下载最新版本的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/

image
此时用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

posted @ 2022-11-29 17:01  麦伦克  阅读(4152)  评论(0编辑  收藏  举报