问题原因
libstdc++.so.6
版本过低,因为
GLIBCXX
至少要求3.4.29版本
解决方法
-
首先定位到报错
libstdc++.so.6
所在位置:
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
查看该动态库对应的版本信息:
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_3.4
... ... ...
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
不难看出,当前
libstdc++.so.6
版本最高到
GLIBCXX_3.4.20
,但是我们需要的苦版本是
GLIBCXX_3.4.29
。
-
首先看看本机上有没有其他的高版本的
libstdc++.so.6
find / -name libstdc++.so.6
/root/miniconda3/envs/py_37/lib/libstdc++.so.6
/root/miniconda3/envs/py_37/nsight-compute/2022.3.0/host/linux-desktop-glibc_2_11_3-x64/libstdc++.so.6
/root/miniconda3/lib/libstdc++.so.6
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
查看第一个的信息
strings /root/miniconda3/envs/py_37/lib/libstdc++.so.6 | grep GLIBCXX_3.4
... ... ...
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_3.4.29
发现这个动态链接库满足我们的要求(我这里第一个就成功了,当然也有可能是其他几个
libstdc++.so.6
满足要求)
- 更新原先的动态链接库
# 删除原动态链接库
sudo rm /usr/lib/x86_64-linux-gnu/libstdc++.so.6
# 更新动态链接库
sudo cp /root/miniconda3/envs/py_37/lib/libstdc++.so.6.0.29 /usr/lib/x86_64-linux-gnu/
# 创建软连接
sudo ln -s /root/miniconda3/envs/py_37/lib/libstdc++.so.6.0.29 /usr/lib/x86_64-linux-gnu/libstdc++.so.6
# 再次查看动态链接库信息
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_3.4
... ... ...
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_3.4.29
成功,此时再次执行代码错误消失
版权声明:本文为weixin_42099090原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。