笑看天下无敌手 发表于 2024-6-20 14:22:55

无root权限办理ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: v

一、题目描述

在利用实行室中的服务器中运行代码时,因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)         https://img-blog.csdnimg.cn/img_convert/e01cca76a6cfed67f65bec5eeae219cb.png       ①使用下述命令查看/usr/lib/x86_64-linux-gnu/libstdc++.so.6对应的软毗连信息,发现其指向版本为6.0.25。
cd /usr/lib/x86_64-linux-gnu/
ls -l libstdc++.so*          https://img-blog.csdnimg.cn/img_convert/eea30afad92027b348cb13becd20e36e.png       ②使用下述命令查看libstdc++.so.6链接包罗的动态库,发现确实未包罗GLIBCXX_3.4.29:
strings libstdc++.so.6 | grep GLIBCXX          https://img-blog.csdnimg.cn/img_convert/61ff658ce200e5bbeaa3e6918cd913a1.png       查阅网上相干办理资料,发现办理方法大多需要将/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/{自己用户名}这个目录下
          https://img-blog.csdnimg.cn/img_convert/fb2e4d1b1ef04b0c61bc2dd394bbda1b.png       发现两个版本,由于我这里使用torch情况,以是查看第二个动态链接库/home/{用户名}/anaconda3/envs/torch/lib/libstdc++.so.6中是否包罗GLIBCXX_3.4.29,输入命令:
strings /home/{用户名}/anaconda3/envs/torch/lib/libstdc++.so.6 | grep GLIBCXX          https://img-blog.csdnimg.cn/img_convert/164da5db5d04cad50150475fc08974e4.png       ②指定加载库的路径
根据我们上面找到的路径:/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 https://img-blog.csdnimg.cn/direct/e40673fa3eb14e68b7f58da0a3a01fd1.png
②参加体系路径
进入文件后把第二部门末了一条export命令写入这一位置。
export LD_LIBRARY_PATH=/home/{用户名}/anaconda3/envs/torch/lib https://img-blog.csdnimg.cn/direct/20d3bcadf26c4e358488a6798faff37a.png
 ③更新配置文件
输入下述命令更新配置文件:
source ~/.bashrc https://img-blog.csdnimg.cn/direct/75ecec8fd82748a49e40402aef27cbac.png
此时,当我们每次重新启动终端,就不需要每次都输入命令,也不会再报前面的错误了~
https://img-blog.csdnimg.cn/direct/1afe8402e9744d15895339f9a73024f1.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 无root权限办理ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: v