今天跑实验遇到了一个头疼的报错,完全看不懂,上网查了一下成功解决,但是网上的指令没法直接拿来用,所以在这里记录一下自己的解决方案。
报错信息:
Traceback (most recent call last):
File "/home/shizhiyuan/code/DecoQuant_code/icl/test_module.py", line 20, in test_svd_module_import
import svd_module
ImportError: /home/shizhiyuan/anaconda3/envs/test/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /home/shizhiyuan/anaconda3/envs/test/lib/python3.10/site-packages/UNKNOWN-0.0.0-py3.10-linux-x86_64.egg/svd_module.cpython-310-x86_64-linux-gnu.so)
可以看到报错信息中是anaconda中的某个虚拟环境中的libstdc++.so.6缺少version `GLIBCXX_3.4.29’。
解决方案
我们先来看一下是不是这样:
strings /home/shizhiyuan/anaconda3/envs/test/lib/libstdc++.so.6 | grep GLIBCXX
得到输出
发现确实没有GLIBCXX_3.4.29。
然后我们需要找到有GLIBCXX_3.4.29的那个libstdc++.so.6
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
得到输出
发现这个地方的libstdc++.so.6有GLIBCXX_3.4.29,ok,那我们直接建立软链接:
cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /home/shizhiyuan/anaconda3/envs/test/lib
rm /home/shizhiyuan/anaconda3/envs/test/lib/libstdc++.so.6
ln -s /home/shizhiyuan/anaconda3/envs/test/lib/libstdc++.so.6 /home/shizhiyuan/anaconda3/envs/test/lib/libstdc++.so.6
需要注意的是,cp命令的第一个地址是有GLIBCXX_3.4.29的位置,第二个是没有的位置。
比着葫芦画瓢写指令,很简单。
建立软链接之后,不再报错!