在利用实验室中的服务器中运行代码时,因libstdc++.so.6版本问题产生报错信息如下:
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /home/{用户名}/anaconda3/envs/torch/lib/python3.8/site-packages/matplotlib/_path.cpython-38-x86_64-linux-gnu.so)
①使用下述命令查看/usr/lib/x86_64-linux-gnu/libstdc++.so.6对应的软连接信息,发现其指向版本为6.0.25。
cd /usr/lib/x86_64-linux-gnu/ls -l libstdc++.so*
②使用下述命令查看libstdc++.so.6链接包含的动态库,发现确实未包含GLIBCXX_3.4.29:
strings libstdc++.so.6 | grep GLIBCXX
查阅网上相关解决资料,发现解决方法大多需要将/usr/lib/x86_64-linux-gnu/libstdc++.so.6下对应的软连接进行修改替换。但由于使用实验室的服务器时不具有root权限,无法进行替换,因此考虑指定加载库的路径。
①检查服务器中是否有包含GLIBCXX_3.4.29的libstdc++.so.6版本(最好是自己用户名下)
find /home/{自己用户名} -name libstdc++.so.6*
注:这里find后面的路径一般是根据自己服务器中,用户文件所在路径进行修改,我的所有文件都在/home/{自己用户名}这个目录下
发现两个版本,因为我这里使用torch环境,所以查看第二个动态链接库/home/{用户名}/anaconda3/envs/torch/lib/libstdc++.so.6中是否包含GLIBCXX_3.4.29,输入命令:
strings /home/{用户名}/anaconda3/envs/torch/lib/libstdc++.so.6 | grep GLIBCXX
②指定加载库的路径
根据我们上面找到的路径:/home/{用户名}/anaconda3/envs/torch/lib/libstdc++.so.6。我们直接在终端中修改指定加载库的路径:
export LD_LIBRARY_PATH=/home/{用户名}/anaconda3/envs/torch/lib
再次运行,发现问题解决,可以成功运行!
来源地址:https://blog.csdn.net/kikiLQQ/article/details/129238099