Ubuntu 22.04中`GLIBCXX_3.4.30'未找到问题的解决方法
解决Ubuntu下.NET 6加载libhostfxr.so时GLIBCXX_3.4.30缺失问题
问题根源
Anaconda环境的libstdc++.so.6版本低于.NET 6要求的GLIBCXX_3.4.30,且Anaconda的库加载优先级高于系统默认库,导致dotnet进程错误加载了旧版本的库。
解决方案
1. 临时应急方案(单次生效)
运行dotnet命令时,强制指定优先加载系统的高版本libstdc++:
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 dotnet --version
编译代码时同理,在编译命令前加上上述前缀即可。
2. 永久修复(当前用户全局生效)
调整库加载路径优先级,让系统库优先于Anaconda库:
- 打开用户shell配置文件(以bash为例):
nano ~/.bashrc - 在文件末尾添加一行:
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH - 使配置立即生效:
source ~/.bashrc
之后再运行dotnet --version即可正常检测版本。
3. 升级Anaconda的libstdc++库
如果不想修改系统路径优先级,可以直接升级Anaconda环境内的libstdc++:
conda install -c conda-forge libstdcxx-ng
该命令会从conda-forge源安装支持GLIBCXX_3.4.30的新版本libstdc++。
4. 检查并升级系统libstdc++(可选)
先确认系统是否已存在符合要求的libstdc++版本:
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_3.4.30
如果无输出,说明系统库版本过低,执行以下命令升级:
sudo apt update && sudo apt install --only-upgrade libstdc++6
内容的提问来源于stack exchange,提问作者HNN
相关产品推荐
相关产品推荐

