/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version`GLIBCXX_3.4.29‘ not found [成功解决] (错误方法易至系统故障)
TensorFlow运行时出现GLIBCXX_3.4.29缺失报错,原因是系统GLIBC版本过低。有效解决方法是添加Ubuntu jammy源后升级libc6:先修改/etc/apt/sources.list添加阿里云源,执行更新安装后即可解决。文章警告勿采用复制高版本libstdc++.so.6的错误方案,该操作会导致系统兼容性问题(如GLIBC_2.34缺失),严重时需重装系统。最后提示不要删
报错信息:【运行tensorflow程序时报错】
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /.../miniforge3/lib/python3.12/site-packages/kiwisolver/_cext.cpython-312-x86_64-linux-gnu.so)
原因:系统上 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 版本太旧。
检测:终端运行 strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
解决方法:直接升级libc6 (可行)
在下面文件中添加一个高级版本系统的源,
sudo gedit /etc/apt/sources.list
文件末尾添加:
deb http://mirrors.aliyun.com/ubuntu/ jammy main
软件升级:
sudo apt update
sudo apt install libc6
再次strings检测,成功更新版本。之后【注释掉该添加系统源】。
错误方法 (复制高版本libstdc++.so.6)
弯路至系统级故障
复制系统中高版本的GLIBCXX到/usr/lib/x86_64-linux-gnu。
find / -name "libstdc++.so.6*"

复制高于29的libstdc++(GLIBCXX_3.4.29)到/usr/lib/x86_64-linux-gnu:
rm /usr/lib/x86_64-linux-gnu/libstdc++.so.6
cp /snap/core22/1981/usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu
再次检测:
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX

但是此时ubuntu系统会出现兼容问题:
再次系统重启时报错:
ImportError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34’ not found
其他教程的坑: rm /lib/x86_64-linux-gnu/libc.so.6, 再拷贝libc.so.6…(大坑,千万别删除再复制高级别的libc.so.6),下篇会讲解该翻坑教程.
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)