如何解决version `GLIBCXX_3.4.29‘ not found的问题

首先,运行时出现的问题如下:

ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /home/wuye/anaconda3/envs/tf2/lib/python3.8/site-packages/google/protobuf/pyext/_message.cpython-38-x86_64-linux-gnu.so)
  • 1

在这里插入图片描述
这个是默认路径下的libstdc++.so.6缺少GLIBCXX_3.4.29,解决方法,如下所示:

(1)使用指令先看下系统目前都有哪些版本的

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

在这里插入图片描述
我这里只到3.28,所以确定是缺少GLIBCXX_3.4.29。
(2)来查看当前系统中其它的同类型文件,找到一个版本比较高的

sudo find / -name "libstdc++.so.6*"
  • 1

请添加图片描述

在这里插入图片描述
版本比较多,就选了一个版本较高的,我这里是3.4.29,使用之前的指令看看其是否包含需要的版本:

strings /home/wuye/anaconda3/envs/tf2/lib/libstdc++.so.6.0.29 | grep GLIBCXX
  • 1

在这里插入图片描述

可以看到有需要的版本,接下来就是建立新的链接到这个文件上
(3)复制到指定目录并建立新的链接

# 复制
sudo cp /home/wuye/anaconda3/envs/tf2/lib/libstdc++.so.6.0.29 /usr/lib/x86_64-linux-gnu/
# 删除之前链接
sudo rm /usr/lib/x86_64-linux-gnu/libstdc++.so.6
# 创建新的链接
sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.29 /usr/lib/x86_64-linux-gnu/libstdc++.so.6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

之后程序一般是能够成功运行的

【注意】有时候由于权限问题,我们需要查看它们的权限

ll /usr/lib/x86_64-linux-gnu/libstd*

  • 1
  • 2

在这里插入图片描述

<think>我们正在解决GLIBCXX_3.4.32未找到的错误。这个错误通常发生在运行程序时,系统找不到对应版本的libstdc++.so.6库。根据引用[2],用户已经尝试了一些步骤,包括更新系统、升级包和安装libstdc++6,但问题可能仍未解决。原因分析:该错误表明程序需要GLIBCXX_3.4.32版本的C++标准库,但当前系统中安装的libstdc++.so.6库版本较低,不包含该符号。因此,我们需要更新libstdc++6到更高版本。解决方案步骤:1.检查当前系统中已安装的GLIBCXX版本:在终端运行以下命令,查看当前支持的GLIBCXX版本:```bashstrings/usr/lib/x86_64-linux-gnu/libstdc++.so.6|grepGLIBCXX```如果输出中没有GLIBCXX_3.4.32,则说明需要升级。2.添加包含较新libstdc++6的软件源并安装:我们可以使用Toolchain测试仓库(ppa:ubuntu-toolchain-r/test)来获取更新的版本。根据引用[2],用户已经添加了这个仓库,但可能还没有安装足够新的版本。安装最新版本的libstdc++6:```bashsudoapt-getinstalllibstdc++6```如果上述命令安装的版本还不够新,我们可以尝试安装指定版本,例如gcc-12对应的libstdc++6:```bashsudoapt-getinstallgcc-12g++-12```安装gcc-12会同时更新libstdc++6。3.更新系统库链接(可选):安装新版本的GCC后,新版本的libstdc++.so.6通常会安装在/usr/lib/x86_64-linux-gnu/目录下,但旧版本可能仍然存在。系统默认使用最新版本的库,但为了确保程序链接到新库,可以检查库的软链接。查看/usr/lib/x86_64-linux-gnu/目录下libstdc++.so.6的软链接指向:```bashls-l/usr/lib/x86_64-linux-gnu/libstdc++.so.6```如果它指向的库版本不够新(例如指向的是旧版本),我们可以手动更新软链接。但通常安装新版本后会自动更新链接。如果没有,我们可以手动创建:```bashsudorm/usr/lib/x86_64-linux-gnu/libstdc++.so.6sudoln-s/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30/usr/lib/x86_64-linux-gnu/libstdc++.so.6```注意:上面的6.0.30应替换为实际安装的新版本号。可以通过`ls/usr/lib/x86_64-linux-gnu/libstdc++.so.6*`查看已有的版本。4.如果上述方法无效,考虑手动下载并替换库文件(不推荐,作为最后手段):从其他系统或官方源下载包含GLIBCXX_3.4.32的libstdc++.so.6.0.30(或更高版本),然后替换现有文件。但这种方法风险较大,可能导致系统不稳定。5.验证:再次运行第一步的检查命令,确认GLIBCXX_3.4.32已存在。注意:如果程序是在容器或特定环境中运行,需要确保该环境也更新了库。引用:[^1]:虽然引用[1]提到了CMake下载错误,但与本问题无关,可以忽略。[^2]:用户已经尝试过更新系统,但可能没有安装足够新的libstdc++6版本。如果问题仍未解决,请提供以下信息以便进一步排查:-系统版本(如Ubuntu18.04)-当前安装的libstdc++6版本(通过`aptlist--installed|greplibstdc++6`查看)-运行第一步检查命令的输出§§相关问题§§1.如何检查当前系统中已安装的GLIBCXX版本?2.如何添加PPA软件源并安装更新?3.如何手动更新libstdc++.so.6的软链接?4.更新libstdc++6后仍然出现同样的错误,可能的原因是什么?</think>### GLIBCXX_3.4.32 未找到错误解决方案 #### 错误原因分析 该错误表示您的程序需要`GLIBCXX_3.4.32`版本的C++标准库,但当前系统中安装的`libstdc++.so.6`库版本过低。常见于: - 运行新编译的程序时使用了旧版GCC库 - 系统升级后未完全同步库文件 - 软件包依赖关系未正确解析[^1] #### 完整解决方案 ##### ✅ 步骤1:验证当前GLIBCXX版本 ```bash # 检查已安装的GLIBCXX版本 strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX # 查看libstdc++6软件包版本 apt list --installed | grep libstdc++6 ``` 如果输出中**不包含GLIBCXX_3.4.32**,说明需要升级。 ##### ✅ 步骤2:添加新版GCC仓库并升级 ```bash # 添加Toolchain测试仓库 sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update # 安装GCC-12(包含GLIBCXX_3.4.32+) sudo apt install gcc-12 g++-12 # 更新所有依赖库 sudo apt upgrade sudo apt dist-upgrade ``` ##### ✅ 步骤3:手动链接新版库文件 ```bash # 定位新版库文件(通常位于gcc-12目录) sudo find / -name "libstdc++.so.6*" 2>/dev/null | grep gcc-12 # 示例路径(根据实际路径调整): sudo ln -sf /usr/lib/gcc/x86_64-linux-gnu/12/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/ ``` ##### ✅ 步骤4:验证修复结果 ```bash # 再次检查版本 strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_3.4.32 # 应显示:GLIBCXX_3.4.32 ``` #### 备选方案 如果仍失败,尝试: 1. **强制重装库文件**: ```bash sudo apt install --reinstall libstdc++6 ``` 2. **手动下载高版本库**: 从[官方镜像](https://ftp.gnu.org/gnu/gcc/)下载GCC 12+源码编译安装 #### 技术原理 GLIBCXX版本与GCC编译器版本严格对应: | GCC版本 | 最低GLIBCXX版本 | |---------|-----------------| | GCC 11 | GLIBCXX_3.4.29 | | **GCC 12** | **GLIBCXX_3.4.32** | | GCC 13 | GLIBCXX_3.4.33 | 更新GCC会同步更新`libstdc++.so.6`动态库[^2]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值