Jetson Nano运行TensorFlow Lite目标检测模型遇__libc_single_threaded错误求助
Jetson Nano运行TensorFlow Lite目标检测模型报错
__libc_single_threaded的排查方案 可能原因及解决办法
1. TensorFlow Lite版本与Jetson架构不兼容
树莓派的TFLite预编译包是针对ARMv7/ARMv8通用架构编译的,而Jetson Nano属于aarch64架构,直接使用会出现符号匹配问题。
- 卸载当前
tensorflow-lite包,改用NVIDIA官方适配Jetson平台的TensorFlow版本(包含优化后的TFLite):pip uninstall tensorflow-lite # 替换为对应JetPack版本的TensorFlow包,例如JetPack 4.6对应版本: pip install tensorflow==2.8.0+nv22.05
2. 虚拟环境未加载更新后的系统库路径
虚拟环境默认可能未继承系统中升级后的libstdc++或glibc相关库路径,导致链接旧版本库文件。
- 激活虚拟环境后手动指定库路径:
export LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu:$LD_LIBRARY_PATH # 或指向g++-11对应的库路径 export LD_LIBRARY_PATH=/usr/lib/gcc/aarch64-linux-gnu/11:$LD_LIBRARY_PATH - 可将上述
export命令添加到虚拟环境的bin/activate文件末尾,实现每次激活自动加载。
3. 系统glibc版本不足
__libc_single_threaded符号是在glibc 2.34及以上版本引入的,Ubuntu 18.04默认glibc版本为2.27,仅升级libstdc++无法解决该符号缺失问题。
- 不建议直接升级Ubuntu 18.04的glibc(易引发系统稳定性问题),推荐从源码针对Jetson Nano架构编译TensorFlow Lite:
# 安装编译依赖 sudo apt-get install build-essential cmake git # 克隆TensorFlow源码 git clone https://github.com/tensorflow/tensorflow.git cd tensorflow # 执行配置(按提示选择Jetson对应的编译选项) ./configure # 编译TFLite Python包 bazel build //tensorflow/lite/python:build_pip_package ./bazel-bin/tensorflow/lite/python/build_pip_package /tmp/tflite_pkg # 安装编译好的包 pip install /tmp/tflite_pkg/tensorflow_lite-*.whl
4. 树莓派示例代码存在平台特定依赖
原示例可能依赖树莓派专属的摄像头或硬件接口库,在Jetson Nano上无法兼容。
- 修改示例代码中的摄像头初始化逻辑,替换为Jetson兼容的方案,比如使用OpenCV的
cv2.VideoCapture或NVIDIA官方的jetson.utils.videoSource接口。
内容的提问来源于stack exchange,提问作者Mito
相关产品推荐
相关产品推荐

