树莓派3B+运行TensorFlow Lite目标检测代码报错:GLIBCXX_3.4.29未找到
解决树莓派3B+ TFLite Runtime导入错误:GLIBCXX_3.4.29未找到
问题场景:在树莓派3B+上开发基于COCO数据集的TFLite目标检测代码,运行时出现导入错误,核心提示为
/lib/arm-linux-gnueabihf/libstdc++.so.6: version 'GLIBCXX_3.4.29' not found,已尝试升级TensorFlow、重装依赖、更换树莓派,问题仍存在。
完整错误信息
Traceback (most recent call last): File "/home/adls3x/Projects/Python/tflite/object_detection/TFLite_detection_webcam.py", line 88, in <module> from tflite_runtime.interpreter import Interpreter File "/home/adls3x/Projects/Python/tflite/tflite-env/lib/python3.9/site-packages/tflite_runtime/interpreter.py", line 33, in <module> from tflite_runtime import _pywrap_tensorflow_interpreter_wrapper as _interpreter_wrapper ImportError: /lib/arm-linux-gnueabihf/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /home/adls3x/Projects/Python/tflite/tflite-env/lib/python3.9/site-packages/tflite_runtime/_pywrap_tensorflow_interpreter_wrapper.so)
相关代码片段
if pkg: from tflite_runtime.interpreter import Interpreter if use_TPU: from tflite_runtime.interpreter import load_delegate else: from tensorflow.lite.python.interpreter import Interpreter if use_TPU: from tensorflow.lite.python.interpreter import load_delegate
错误原因
这个问题的本质是系统自带的libstdc++库版本过低,无法满足当前安装的TFLite Runtime对GLIBCXX_3.4.29符号的依赖。树莓派默认的Raspberry Pi OS(原Raspbian)预装的libstdc++版本可能较旧,无法匹配新版本TFLite的要求。
解决步骤
1. 确认系统libstdc++支持的版本
先检查系统是否确实缺少目标版本:
strings /lib/arm-linux-gnueabihf/libstdc++.so.6 | grep GLIBCXX
如果输出里没有GLIBCXX_3.4.29,则需要升级或替换库。
2. 升级系统自带的libstdc++(优先方案)
这是最稳妥的解决方式,先尝试:
# 更新系统包索引 sudo apt update # 升级所有已安装包(包含libstdc++) sudo apt upgrade -y # 单独升级libstdc++6 sudo apt install --only-upgrade libstdc++6
完成后重新运行脚本,检查错误是否消失。
3. 手动安装高版本libstdc++(系统升级无效时)
如果系统源里的libstdc++版本仍不够,可以手动下载适配ARM架构的高版本包安装:
- 获取适配armhf架构的
libstdc++6deb包 - 执行安装命令:
sudo dpkg -i libstdc++6_*.deb # 修复可能的依赖问题 sudo apt -f install
4. 降级TFLite Runtime版本(libstdc++升级受阻时)
如果系统版本太旧无法兼容高版本libstdc++,可以安装对依赖要求更低的旧版TFLite Runtime:
# 卸载当前版本 pip uninstall tflite-runtime -y # 安装适配Python3.9的旧版本(示例为2.8.0,可按需调整) pip install tflite-runtime==2.8.0
5. 验证修复
重新运行目标检测脚本:
python /home/adls3x/Projects/Python/tflite/object_detection/TFLite_detection_webcam.py
如果导入错误消失,说明问题解决。
内容的提问来源于stack exchange,提问作者StavBerko
相关产品推荐
相关产品推荐

