文章目录
一、问题描述
对某个包进行版本升级后突然报错如题libstdc++.so.6: version GLIBCXX_3.4.29‘ not found
。
二、解决方法
遇到 libstdc++.so.6: version 'GLIBCXX_3.4.29' not found
的错误通常意味着你的系统中安装的 GCC 版本过低,没有包含尝试运行的程序或库所需的 GLIBCXX
版本。解决这个问题通常有几种方法:
1. 更新 GCC
最直接的解决办法是更新您的 GCC 版本。这可以通过 Linux 发行版的包管理器来完成。例如,在基于 Debian 的系统(如 Ubuntu)上,可以使用以下命令:
sudo apt update
sudo apt install build-essential
在 Red Hat、CentOS 或 Fedora 上,可以使用:
sudo yum update
sudo yum install gcc gcc-c++
或者,如果使用的是 dnf:
sudo dnf update
sudo dnf install gcc gcc-c++
2. 更新 libstdc++
如果仅仅是 libstdc++
库过旧,而不希望或不需要更新整个 GCC,可以尝试单独更新这个库。这通常需要从源代码编译或寻找适合你的系统版本的预编译包。
3. 设置 LD_LIBRARY_PATH
如果已经有了一个较新版本的 libstdc++.so.6
,但它不在标准库路径中,可以通过设置 LD_LIBRARY_PATH
环境变量来指定库文件的位置。例如:
export LD_LIBRARY_PATH=/path/to/new/libstdc++:$LD_LIBRARY_PATH
请将 /path/to/new/libstdc++
替换为包含新版本 libstdc++.so.6
的目录路径。这是一个临时解决方案,只在当前终端会话中有效。
4. 使用 Conda 环境(针对 Python 用户)
如果在使用 Python 并且是通过 Conda 管理环境,Conda 可以帮助解决库依赖问题。创建一个新的 Conda 环境,并在其中安装需要的包,Conda 会尝试为您解决所有依赖问题,包括正确版本的 libstdc++
。
conda create -n myenv python=3.x
conda activate myenv
# 然后安装您需要的包
5. 编译安装最新版本 GCC
如果系统的包管理器提供的 GCC 版本仍然不够新,可以从源代码编译安装 GCC。这是一个比较复杂和耗时的过程,但可以确保获得最新版本的 GCC 和 libstdc++
。
请注意,更新系统核心组件(如 GCC 或 libstdc++
)可能会影响到其他依赖这些组件的软件。在进行大的更新前,确保备份重要数据,并考虑在一个测试环境中先行测试。
Reference
[1] 正确解决libstdc++.so.6: version `GLIBCXX_3.4.26 not found问题
[2] 解决/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.21’ not found问题
[3] 如何解决version GLIBCXX_3.4.29‘ not found的问题