version `GLIBCXX_3.4.20‘ not found 解决方法

文章讲述了在更新hisat2版本后遇到的两个关于libstdc++版本缺失的错误,作者详细描述了如何通过检查系统版本、使用yum工具查找提供库、下载并替换旧版本库、以及创建新软连接来解决这些问题的过程。

原文:https://www.jianshu.com/p/050b2b777b9d
更新了hisat2的版本后,运行出现了2个错误,
error1:/lib64/libstdc++.so.6: version GLIBCXX_3.4.20 not found
error2: /lib64/libstdc++.so.6: version CXXABI_1.3.8 not found
查阅了网上的解决方法,都说要更新libstdc++.so.6,按照教程操作,一直没有成功,最后参考了好几篇文章,综合了大家的方法,成功更新了,特用此贴,记录过程。

1. 查看系统版本
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH

发现少了GLIBCXX_3.4.20,解决方法是升级libstdc++.

2. 
sudo yum provides libstdc++.so.6
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
libstdc++-4.8.5-39.el7.i686 : GNU Standard C++ Library
Repo        : base
Matched from:
Provides    : libstdc++.so.6

3. 
cd /usr/local/lib64
# 下载最新版本的libstdc.so_.6.0.26
sudo wget http://www.vuln.cn/wp-content/uploads/2019/08/libstdc.so_.6.0.26.zip
unzip libstdc.so_.6.0.26.zip
# 将下载的最新版本拷贝到 /usr/lib64
cp libstdc++.so.6.0.26 /usr/lib64
cd  /usr/lib64
# 查看 /usr/lib64下libstdc++.so.6链接的版本
ls -l | grep libstdc++
libstdc++.so.6 ->libstdc++.so.6.0.19
# 删除/usr/lib64原来的软连接libstdc++.so.6,删除之前先备份一份
sudo rm libstdc++.so.6
# 链接新的版本
sudo ln -s libstdc++.so.6.0.26 libstdc++.so.6
# 查看新版本,成功
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
...
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_DEBUG_MESSAGE_LENGTH
...
<think> 嗯,用户提出了关于解决 &#39;version GLIBCXX_3.4.20 not found&#39; 错误的具体需求。从用户提供的引用资料来看,ta应该是在运行某些程序时遇到了这个动态链接库缺失的问题,特别是引用[2]直接提到了这个错误。 用户可能正在尝试运行某个依赖较新C++标准库的应用程序,比如MATLAB扩展或深度学习框架。考虑到ta引用了conda环境路径,用户很可能是在Python科学计算环境中遇到这个问题。这个错误通常发生在系统自带的libstdc++.so.6版本过旧时。 让我整理解决方案时需要注意几点:首先必须保留旧版本库的备份以避免系统崩溃,其次要确认目标路径是否正确,不同Linux发行版的库路径可能不同。用户提供的引用中包含了三种方法:直接替换库文件、建立软链接、更新gcc编译器,其中最安全的是更新gcc的方法,但耗时最长。 考虑到用户可能是技术人员但未必熟悉系统底层,准备把解决方案按风险排序:先建议最安全的软链接方案,再提供替换库文件的方法。必须强调备份的重要性,并在最后说明长期解决方案是升级gcc——虽然这需要编译时间,但能从根本上解决问题。 另外注意到用户引用的方案涉及MATLAB和conda环境,在回答中特别说明这两种情况的处理差异:MATLAB通常使用自带的库,而conda环境可能需要更新gcc包。用户没有提供具体环境信息,所以需要给出通用方案的同时提示环境适配要点。 最后生成的扩展问题应该覆盖常见相关场景:如何检查当前库版本、更新gcc的替代方案、预防此类错误的方法等。特别是预防措施对科研计算用户很重要,ta们经常需要安装最新科研软件。 对了,所有命令行操作都需要用代码块清晰标示,路径变量要用$符号表示以便用户替换。对于glibcxx版本号这样的专有名词,在回答中保持大写一致性——虽然错误提示是小写,但正式名称应该写作GLIBCXX_3.4.20。 </think> 解决 `version &#39;GLIBCXX_3.4.20&#39; not found` 错误的步骤如下(根据引用[2]的核心思路并结合系统安全操作): ### 🔧 解决步骤 1. **确认缺失版本** 在终端运行: ```bash strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX ``` 若输出中无 `GLIBCXX_3.4.20`,则需升级库文件。 2. **获取新版库文件** **方法1(推荐)**:通过系统包管理器升级 GCC ```bash sudo apt update sudo apt install gcc-10 g++-10 # Ubuntu 20.04+ 默认提供 GLIBCXX_3.4.28 ``` **方法2**:手动下载高版本库 从 [GCC镜像站](https://mirrors.kernel.org/gnu/gcc/) 下载对应版本,编译后提取 `libstdc++.so.6.0.28`(含GLIBCXX_3.4.20)。 3. **替换库文件(谨慎操作)** ```bash # 备份原库文件! sudo cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.bak # 复制新库(假设新库在 ~/downloads/) sudo cp ~/downloads/libstdc++.so.6.0.28 /usr/lib/x86_64-linux-gnu/ # 重建软链接 cd /usr/lib/x86_64-linux-gnu sudo rm libstdc++.so.6 sudo ln -s libstdc++.so.6.0.28 libstdc++.so.6 ``` 4. **验证修复** 再次执行: ```bash strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_3.4.20 ``` 应显示 `GLIBCXX_3.4.20` > ⚠️ **特殊环境处理** > - **Conda环境**:若错误发生在conda环境内,需激活环境后执行 `conda install libgcc` > - **MATLAB**:将新库复制到MATLAB的运行时库路径 `matlabroot/bin/glnxa64/`[^1] ### 📚 根本解决方案 建议优先通过 `apt install libstdc++6` 更新系统库,或安装新版GCC编译器。手动替换库可能导致依赖冲突,仅作为临时方案。 ### ❓相关问题 1. 如何安全升级系统中的GLIBC版本? 2. Conda环境中出现 `GLIBCXX` 缺失错误该如何解决3. 编译安装GCC时如何避免破坏系统稳定性? 4. 如何查看程序依赖的动态链接库版本? [^1]: 引用自用户提供的备份替换方案 [^2]: 引用自用户提供的版本检查命令 [^3]: 引用自用户提供的软链接修复范例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值