【pytorch】/libstdc++.so.6: version `CXXABI_1.3.11' not found

本文详细介绍了当使用Python导入torchvision包时遇到的错误:'/libstdc++.so.6:version CXXABI_1.3.11 not found'的解决办法。主要原因是libstdc++.so.6版本过低,解决方案包括查找并复制更高版本的libstdc++.so.6到conda环境的lib目录,并设置软链接。
部署运行你感兴趣的模型镜像

使用python 导入torchvision包时,计算机报错:/libstdc++.so.6: version CXXABI_1.3.11 not found

可能错误原因:libstdc++.so.6版本太低

解决方法:使用更高版本的libstdc++.so


具体步骤:

1. 在电脑中查找更高版本libstdc++.so

在自己用户目录下查找:find ~/ -name libstdc++.so*
如果找不到,则在整个计算机中查找:find / -name libstdc++.so*
这边选择的是libstdc++.so.6.0.26
在这里插入图片描述

2. 将选好的文件复制到conda环境下的lib文件夹中

通常为~/username/anaconda3/envs/envs_name/lib
其中,username为用户名,envs_name为虚拟环境名

3. 设置软链接
cd ~/username/anaconda3/envs/envs_name/lib
ln -s libstdc++.so.6.0.26 libstdc++.so.6
搞定!

参考链接:
1. https://blog.youkuaiyun.com/qingdu007/article/details/81515984

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

Python3.11

Python3.11

Conda
Python

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

### 问题分析 当系统尝试加载某个依赖于特定版本 `libstdc++` 的共享库(如 `libosg.so.161`)时,会检查当前环境中是否存在所需的 `GLIBCXX` 版本符号。如果缺少所需的 `GLIBCXX_3.4.32` 符号,则会抛出类似以下错误: ``` libstdc++.so.6: version `GLIBCXX_3.4.32' not found (required by libosg.so.161) ``` 该问题通常出现在以下几种情况: - 系统或 Conda 环境中的 `libstdc++.so.6` 版本过低,未包含所需的 `GLIBCXX` 版本符号。 - 某些库(如 OSG、PyTorch、TensorFlow、ZMQ、SciPy)依赖更高版本的 C++ 标准库。 - Conda 环境中存在多个 `libstdc++` 实例,导致动态链接器优先使用了旧版本。 ### 解决方案 #### 1. 检查当前环境中 `libstdc++.so.6` 支持的 GLIBCXX 版本 使用以下命令查看当前系统或 Conda 环境中的 `libstdc++.so.6` 支持哪些 `GLIBCXX` 版本: ```bash strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX ``` 如果发现最高版本为 `GLIBCXX_3.4.30` 或更低,则需要升级或手动链接更高版本的 `libstdc++`。 #### 2. 安装更高版本的 GCC(包含更新的 libstdc++) `libstdc++` 是 GCC 工具链的一部分,因此升级 GCC 可以获取更新的 `libstdc++`: ```bash sudo apt update sudo apt install gcc-12 g++-12 ``` 安装完成后,更新默认的 GCC 版本(可选): ```bash sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 60 --slave /usr/bin/g++ g++ /usr/bin/g++-12 ``` #### 3. 替换或链接 Conda 环境中的 libstdc++ Conda 环境可能会自带旧版本的 `libstdc++`,可以通过以下方式替换: ```bash conda install -c conda-forge libstdcxx-ng ``` 或手动链接系统中更高版本的 `libstdc++` 到 Conda 环境: ```bash cd $CONDA_PREFIX/lib ln -sf /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so.6 ``` #### 4. 验证链接库路径 确保运行时加载的是正确的 `libstdc++` 版本,可以使用 `LD_LIBRARY_PATH` 强制指定路径: ```bash export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH ``` 或者使用 `patchelf` 修改特定可执行文件或 `.so` 文件的依赖路径: ```bash patchelf --set-rpath /usr/lib/x86_64-linux-gnu your_executable_or_library.so ``` #### 5. 使用容器或虚拟环境隔离 如果上述方法无法解决,可考虑使用 Docker 容器或 Singularity 环境部署应用,以确保依赖版本一致: ```dockerfile FROM nvidia/cuda:12.1.0-base RUN apt update && apt install -y gcc-12 g++-12 COPY your_app /app CMD ["/app"] ``` ### 示例:手动链接 libstdc++ 到 Conda 环境 ```bash # 查看当前 Conda 环境 libstdc++ 路径 CONDA_PREFIX=$(conda info | grep "active env location" | awk '{print $NF}') cd $CONDA_PREFIX/lib # 备份原有软连接(如有) mv libstdc++.so.6 libstdc++.so.6.bak # 创建新链接 ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so.6 ``` 验证是否成功: ```bash strings $CONDA_PREFIX/lib/libstdc++.so.6 | grep GLIBCXX | tail -n 1 ``` 应输出 `GLIBCXX_3.4.32` 或更高版本。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值