树莓派运行TensorFlow Lite目标检测Demo遇GLIBCXX_3.4.29缺失错误求助
树莓派TensorFlow Lite目标检测Demo的GLIBCXX版本问题解决
问题背景
在树莓派Bullseye系统上运行TensorFlow Lite目标检测Demo,已完成pip install tflite-support、pip install opencv-python及sh setup.sh依赖安装且无报错,但执行python3 detect.py --model efficientdet_lite0.tflite时触发ImportError:/lib/arm-linux-gnueabihf/libstdc++.so.6缺少GLIBCXX_3.4.29版本,当前系统仅支持至GLIBCXX_3.4.28。
1. 如何解决该错误使程序正常运行?
提供三种可行方案:
- 降级tflite-support版本:最新版tflite-support依赖更高GLIBCXX版本,安装适配Bullseye的旧版本即可,执行:
pip install tflite-support==0.4.3 - 手动替换libstdc++.so.6库:
- 下载ARM架构的GCC 11预编译包,解压后找到
libstdc++.so.6.0.29文件 - 备份系统原文件:
sudo cp /lib/arm-linux-gnueabihf/libstdc++.so.6 /lib/arm-linux-gnueabihf/libstdc++.so.6.backup - 复制新库文件到系统目录:
sudo cp path/to/libstdc++.so.6.0.29 /lib/arm-linux-gnueabihf/ - 更新软链接:
sudo ln -sf /lib/arm-linux-gnueabihf/libstdc++.so.6.0.29 /lib/arm-linux-gnueabihf/libstdc++.so.6
- 下载ARM架构的GCC 11预编译包,解压后找到
- 使用独立conda环境:安装miniforge后创建独立环境,conda会自动管理依赖库版本,避免系统库冲突。
2. 运行TFLite是否必须升级GCC?
不需要。只要使用适配当前系统GCC版本的tflite-support旧版本,或通过替换libstdc++.so.6库的方式,无需升级整个GCC编译器。仅当你需要编译依赖高版本GCC特性的TFLite源码或扩展时,才需要升级GCC。
3. 若需升级GCC,是否必须从源码编译?
不需要,有两种更简便的方式:
- 通过apt第三方源安装:
- 编辑apt源列表:
sudo nano /etc/apt/sources.list - 添加Debian Testing的源码源(如
deb-src http://deb.debian.org/debian testing main) - 更新源并安装GCC 11:
sudo apt update && sudo apt install gcc-11 g++-11 - 设置默认GCC版本:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100
- 编辑apt源列表:
- 使用预编译二进制包:下载ARM架构的预编译GCC包,解压后配置环境变量即可直接使用,跳过源码编译步骤。
内容的提问来源于stack exchange,提问作者AndrewModelski
相关产品推荐
相关产品推荐

