/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29 ‘not found

问题原因

libstdc++.so.6版本过低,因为GLIBCXX至少要求3.4.29版本

解决方法

  1. 首先定位到报错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

  1. 首先看看本机上有没有其他的高版本的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满足要求)

  1. 更新原先的动态链接库
# 删除原动态链接库
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

成功,此时再次执行代码错误消失

参考链接:https://github.com/pybind/pybind11/discussions/3453

  • 10
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值