解决/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.30‘ not found
·
一、问题描述:在使用paddle训练模型时候,报下面错误。
- Error: Can not import paddle core while this file exists:
/opt/conda/envs/paddle/lib/python3.8/site-packages/paddle/base/libpaddle.so
Traceback (most recent call last): File
“/data/liuzy/PaddleClas-release-2.6/1230.py”, line 1, in
import paddle File “/opt/conda/envs/paddle/lib/python3.8/site-packages/paddle/init.py”,
line 28, in
from .base import core # noqa: F401 File “/opt/conda/envs/paddle/lib/python3.8/site-packages/paddle/base/init.py”,
line 36, in
from . import core File “/opt/conda/envs/paddle/lib/python3.8/site-packages/paddle/base/core.py”,
line 380, in
raise e File “/opt/conda/envs/paddle/lib/python3.8/site-packages/paddle/base/core.py”,
line 268, in
from . import libpaddle ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.30’
not found (required by /opt/conda/envs/paddle/lib/python3.8/site-packages/paddle/base/libpaddle.so)
二、分析问题:这个错误通常是由于 libstdc++ 库版本不匹配导致的。具体来说,/usr/lib/x86_64-linux-gnu/libstdc++.so.6 没有找到 GLIBCXX_3.4.30 版本,而这是 libpaddle.so 需要的版本。
三、解决问题:
- 检查现有的 libstdc++ 版本
首先,查看当前系统安装的 libstdc++ 版本,使用以下命令:
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
这会列出 libstdc++.so.6 支持的所有 GLIBCXX 版本。可以看到,确实没有GLIBCXX_3.4.30 版本
- 查看系统中的其它地方是否存在libstdc++.so.6文件
find / -name libstdc++.so.6
从结果可以看出,在conda的paddle环境下就有libstdc++.so.6
- 查看conda环境paddle中的这个libstdc++.so.6文件是否支持GLIBCXX_3.4.30
strings /opt/conda/envs/paddle/lib/libstdc++.so.6 | grep GLIBC
很幸运,它是支持的:
- 删除 /usr/lib/x86_64-linux-gnu/libstdc++.so.6
rm /usr/lib/x86_64-linux-gnu/libstdc++.so.6
- 创建软链接
ln -s /opt/conda/envs/paddle/lib/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so.6
到此,问题完美解决!
备注:如果整个系统中确实找不到支持GLIBCXX_3.4.30的libstdc++.so.6,那么可以手动安装更高版本的 libstdc++,具体步骤不再赘述,可自行百度。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)