如何解决树莓派上ImportError: GLIBCXX_3.4.29未找到的问题?
解决树莓派上tflite-runtime依赖GLIBCXX_3.4.29缺失的问题
问题原因
树莓派系统预装的libstdc++.so.6版本过低,缺少tflite-runtime所需的GLIBCXX_3.4.29版本符号,导致动态链接失败。
解决方案
方案一:更新系统及libstdc++库(优先尝试)
- 更新系统包索引并升级所有软件包:
sudo apt update && sudo apt upgrade -y - 重新安装或升级
libstdc++6:sudo apt install --reinstall libstdc++6 - 验证版本是否达标:
输出中如果包含strings /lib/arm-linux-gnueabihf/libstdc++.so.6 | grep GLIBCXXGLIBCXX_3.4.29,说明更新成功。
方案二:安装兼容版本的tflite-runtime
如果系统更新后仍无法满足版本要求(比如旧版Raspbian系统),可以选择安装对libstdc++版本要求较低的tflite-runtime版本:
pip install tflite-runtime==2.8.0
注:可根据实际情况调整版本号,比如2.7.0、2.6.0等,优先选择适配ARM架构的稳定版本。
方案三:手动编译更新libstdc++(适合有编译经验的用户)
如果前两种方案无效,可手动编译高版本gcc以更新libstdc++:
- 安装编译依赖:
sudo apt install build-essential gcc-multilib - 下载gcc-11源码(GLIBCXX_3.4.29由gcc-11引入):
wget https://ftp.gnu.org/gnu/gcc/gcc-11.2.0/gcc-11.2.0.tar.gz - 解压并编译:
tar -xf gcc-11.2.0.tar.gz cd gcc-11.2.0 ./contrib/download_prerequisites mkdir build && cd build ../configure --prefix=/usr/local --enable-languages=c,c++ --disable-multilib make -j4 # 根据树莓派核心数调整,比如4核用-j4,2核用-j2 sudo make install - 更新系统链接库:
sudo ldconfig - 再次验证版本是否包含
GLIBCXX_3.4.29。
验证修复
完成上述任一方案后,重新运行你的预测脚本:
python3 model.py image_path
确认错误消失,脚本正常输出预测结果。
内容的提问来源于stack exchange,提问作者lipian
相关产品推荐
相关产品推荐

