conda虚拟环境运行程序出现“/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.30’ not found”

部署运行你感兴趣的模型镜像

问题描述

我从别的服务器打包了conda虚拟环境迁移到另一台服务器,运行程序的时候出错,显示/usr/lib/libstdc++.so.6: version ‘GLIBCXX_3.4.30’ not found(required by....)。我在原服务器中是没有出现这个问题的。


原因分析:

排查下来发现是系统库没有对应版本GLIBCXX,conda虚拟环境中有对应版本,程序调用的是系统库所以出错了

这里程序调用的是系统里面的lib,使用这个命令查看系统是否有对应版本的GLIBCXX,显示版本最多到3.4.29

strings  /usr/lib/libstdc++.so.6 | grep GLIBCXX

然后我查看了conda环境中的lib,可以看到是有对应版本的GLIBCXX,所以需要让程序优先调用 conda 环境中的lib目录(而非系统默认库),指定库的加载路径。

在这里插入图片描述
在这里插入图片描述

这里我直接查看libstdc++.so.6.0.34而不是libstdc++.so.6.

豆包的解释
在 conda 虚拟环境的lib文件夹中,libstdc++.so.6和libstdc++.so.6.0.34是 C++ 标准库的相关文件,它们的主要区别如下:
①文件类型与关系
libstdc++.so.6.0.34是实际的库文件,6.0.34是具体版本号,代表该库的完整版本
libstdc++.so.6是一个符号链接(软链接),通常指向当前环境中正在使用的libstdc++库版本(在你的情况中就是指向libstdc++.so.6.0.34)
②作用不同
程序编译和运行时,通常会查找libstdc++.so.6这个通用名称
符号链接的存在是为了兼容不同版本:当库版本更新(比如到6.0.35)时,只需将libstdc++.so.6重新指向新的版本文件,而不需要修改依赖它的程序
③版本兼容性
libstdc++.so.6.0.34包含该版本库的具体实现,支持特定的GLIBCXX版本(比如可能包含GLIBCXX_3.4.30)
不同的6.0.x版本会支持不同的GLIBCXX特性,版本越高通常支持的GLIBCXX版本也越高


解决方案:

  • 方法 1:临时设置 LD_LIBRARY_PATH 环境变量

LD_LIBRARY_PATH是Linux系统用于指定动态链接库(.so文件)加载路径的环境变量,优先级高于系统默认路径。这种方法仅对当前终端会话有效,关闭终端后失效。

# 激活你的conda环境
conda activate 你的环境名

# 设置环境变量,指向当前conda环境的lib目录
export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH
  • 方法 2:通过 conda 配置自动设置

利用conda的env_vars功能,让环境激活时自动设置LD_LIBRARY_PATH

进入 conda 环境的配置目录,创建激活环境时的脚本。

touch $CONDA_PREFIX/etc/conda/activate.d/set_libpath.sh

set_libpath.sh脚本中设置变量。

export LD_LIBRARY_PATH_OLD=$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH

创建退出环境时的脚本并恢复变量。

touch $CONDA_PREFIX/etc/conda/deactivate.d/unset_libpath.sh

unset_libpath.sh脚本中输入这两行内容。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH_OLD
unset LD_LIBRARY_PATH_OLD

验证一下,首先输出的是conda虚拟环境中的lib,设置成功。
在这里插入图片描述


总结:

感谢豆包!

参考链接:
conda环境中 解决/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.30’

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

Python3.8

Python3.8

Conda
Python

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值