如何解决 :libstdc++.so.6: version `GLIBCXX_3.4.30‘ not found

如何解决 :libstdc++.so.6: version `GLIBCXX_3.4.30‘ not found

问题描述:
当您尝试在Linux系统上运行某个程序或软件时,有时会遇到一个错误,提示libstdc++.so.6: version GLIBCXX_3.4.30 not found。这个错误表明您的系统缺少某个特定版本的C++标准库,具体来说就是GLIBCXX_3.4.30

原因:
这个问题的原因通常是因为您的系统上安装的libstdc++版本太旧,或者您的程序需要的是一个更新版本的libstdc++

解决方案:
升级GCC
GLIBCXX_3.4.30是GCC(GNU Compiler Collection)的某个版本中的C++标准库版本。您可以通过升级GCC来获取此版本。

在基于Debian的系统(如Ubuntu)上,可以使用以下命令:

sudo apt-get update
sudo apt-get install gcc-11 g++-11
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 80 --slave /usr/bin/g++ g++ /usr/bin/g++-11
sudo find / -name libstdc++.so.6

可以看到系统中C++标准库libstdc++.so.6文件有多个,基本是每个独立性较高的程序都在自己的环境路径下有个libstdc++.so.6文件,所以这样是因为不同的libstdc++.so.6文件可能内部的GLIBCXX版本并不相同,因此一些不需要从源码编译的软件就会采用这种方式,把符合自身版本需要的libstdc++.so.6文件放在自身的库路径下,这样在调用的时候会优先调用自身带有的libstdc++.so.6文件而不是系统自带的。

我们可以看下系统libstdc++.so.6文件中支持的GLIBCXX版本:

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX

image

我们再看下anaconda环境下libstdc++.so.6文件中支持的GLIBCXX版本:

strings /home/devil/anaconda3/envs/impala/lib/libstdc++.so.6 | grep GLIBC

image

可以看到系统环境下 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 文件含有GLIBCXX_3.4.30版本,而anaconda环境下/usr/lib/x86_64-linux-gnu/libstdc++.so.6文件含有的最高版本为GLIBCXX_3.4.29,因此有了前面的报错。

我们只需要将anaconda环境中libstdc++.so和libstdc++.so.6的链接地址指向系统路径中的地址即可:

ln -sf /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /home/yourenvname/anaconda3/envs/pycode/bin/../lib/libstdc++.so.6

image

posted @   michaelchengjl  阅读(4910)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示