libstdc++.so.6版本过低,找不到GLIBCXX_3.4.29

文章讲述了在服务器上遇到libstdc++版本不匹配的问题,通过下载更高版本的libstdc++库并替换,以及降低protobuf版本来解决问题的过程。作者提供了详细步骤和下载链接。
部署运行你感兴趣的模型镜像

于2024.2.29进行编辑,因为在服务器中修改/lib/x86_64-linux-gnu/libstdc++.so.6没有权限,又找到了新的方法,见第二模块。

一、在服务器的其他文件夹中找到最高版本为6.0.28,其中也没有GLIBCXX_3.4.29。故从网友处下载libstdc++.so.6.0.29链接原有libstdc++.so.6即可使用。

过程:
1.运行提示错误:ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.29' not found (required by /usr/local/anaconda3/envs/Gesture/lib/python3.9/site-packages/google/protobuf/pyext/_message.cpython-39-x86_64-linux-gnu.so)
2.下载libstdc++.so.6.0.29到本地,并保存至服务器地址:/usr/local/anaconda3/lib下。
3.依次运行如下语句,路径需要改为自己的路径。大概意思就是移除/usr/local/anaconda3/lib下的libstdc++.so.6,把刚才放到该路径下的libstdc++.so.6.0.29链接上。

rm /usr/local/anaconda3/lib/libstdc++.so.6
ln -s /usr/local/anaconda3/lib/libstdc++.so.6.0.29 /usr/local/anaconda3/lib/libstdc++.so.6

4.再通过该命令就可以查看到已经有GLIBCXX_3.4.29了。

strings /usr/local/anaconda3/lib/libstdc++.so.6 | grep GLIBCXX_3.4.29

在这里插入图片描述

libstdc++.so.6.0.29下载地址(ali云盘)

二、升级权限不够,可以降低protobuf版本

该过程原作者:https://blog.youkuaiyun.com/u013354678/article/details/135296108

过程:
1.在报错中可以看到from goole.protobuf.pyext这个包引起的报错。
在这里插入图片描述
2.先卸载本地protobuf

pip uninstall protobuf 

3.再安装更低版本的protobuf

pip install protobuf==3.20.0

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

`libstdc++.so.6` 是 GNU 标准 C++ 库(`libstdc++`)的动态链接库版本,是 GNU 编译器集合(GCC)的一部分[^1]。它的链接来源通常与 GCC 的安装和使用相关。在不同的系统中,`libstdc++.so.6` 可能来自系统自带的 GCC 安装包,也可能是用户手动安装的特定版本 GCC 所附带的。 在 Linux 系统中,可以通过以下方式查 `libstdc++.so.6` 的位置,从而了解其链接来源: ```bash find / -name "libstdc++.so.6*" ``` 例如,在某些系统中,可能会到类似以下的结果: ``` /usr/lib/libstdc++.so.6 /usr/lib/libstdc++.so.6.0.19 /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.0.19 /usr/local/gcc-9.2.0/lib64/libstdc++.so.6 /usr/local/gcc-9.2.0/lib64/libstdc++.so.6.0.27 ``` 其中,`/usr/lib` 和 `/usr/lib64` 通常是系统默认的库文件路径,这些路径下的 `libstdc++.so.6` 可能是系统安装 GCC 时自动安装的。而 `/usr/local/gcc-9.2.0/lib64` 这样的路径则表明 `libstdc++.so.6` 是由用户手动安装的特定版本 GCC 所提供的[^2]。 如果系统中 `libstdc++.so.6` 库版本,不包含 `GLIBCXX_3.4.29` 版本,可以通过升级 `libstdc++` 来解决。例如,在 CentOS 系统中,可以使用以下命令查提供 `libstdc++.so.6` 的软件包: ```bash yum provides libstdc++.so.6 ``` 然后根据查结果安装合适的版本。也可以手动下载最新版本的 `libstdc++.so.6`,并替换系统中的旧版本。具体步骤如下: ```bash # 下载最新版本libstdc++.so.6 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/lib64libstdc++.so.6 链接的版本 ls -l | grep libstdc++ # 删除 /usr/lib64 原来的软连接 libstdc++.so.6,删除之前先备份一份 rm libstdc++.so.6 # 链接新的版本 ln -s libstdc++.so.6.0.26 libstdc++.so.6 # 查看新版本 strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值