无root权限解决ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found问题

一、问题描述

在利用实验室中的服务器中运行代码时,因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

(评论区朋友的补充~)这一步运行如果不行的话,可以在该条命令后加上:$LD_LIBRARY_PATH,即:

export LD_LIBRARY_PATH=/home/{用户名}/anaconda3/envs/torch/lib:$LD_LIBRARY_PATH

再次运行,发现问题解决,可以成功运行!


2023年12月11日补充 

到上面这一步其实就可以结束啦,下面是为了解决一个“一劳永逸的问题”,当然,大家如果觉得这一步较麻烦(虽然我觉得不麻烦^-^),又不想每一次重启终端都输一下上面这条命令,也可以直接把export命令写入到自己的脚本里面,那每一次运行也是不需要自己单独再输入这条命令啦~

三、补充:重新启动终端无需重新输入命令

在发布这篇文章后,评论区有好多朋友都问“做法是不是一次性的”。我的回答是,运行完第二部分的内容,确实在重启终端后,确实要重新建立链接,即每一次打开终端都需要重新运行上述export命令
看到大家问有没有“一劳永逸”的方法,所以我也一直有在留意着~恰好近期实验室服务器更新需要重新配置,配置过程中我终于发现了一种方法可以解决“一次性”的问题,因此在这里进行更新,希望能够分享给大家。(也许会有更好的方法,也超级欢迎大家的补充~)

这一部分的内容主要为了能在重启终端后无需重新运行export命令

①编辑~/.bashrc文件

我的方法就是直接将其加入系统路径。首先在终端中输入下面的命令

vim ~/.bashrc

②加入系统路径

进入文件后把第二部分最后一条export命令写入这一位置。

export LD_LIBRARY_PATH=/home/{用户名}/anaconda3/envs/torch/lib

 ③更新配置文件

输入下述命令更新配置文件:

source ~/.bashrc

此时,当我们每次重新启动终端,就不需要每次都输入命令,也不会再报前面的错误了~

评论 55
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值