Ubuntu 22.04下CMake编译TensorFlow Lite C++遇未定义引用错误
解决Ubuntu 22.04 x86_64上TensorFlow Lite C++最小示例的未定义引用错误
问题根源
你遇到的未定义引用错误(如Register_ABS()),本质是构建流程未将所有TensorFlow Lite内置算子的编译单元正确链接;microkernels-all构建错误则大概率是残留配置或分支代码不稳定导致的。以下是经过验证的修复步骤:
步骤1:切换到稳定版本并清理残留构建
主分支代码可能存在未修复的兼容性问题,优先使用官方稳定版本:
# 若已克隆仓库,直接切换分支;未克隆则先执行git clone https://github.com/tensorflow/tensorflow.git tensorflow_src cd tensorflow_src git checkout v2.15.0 rm -rf minimal_build tflite_build # 清理所有旧构建目录
步骤2:安装依赖
确保系统具备完整的编译环境:
sudo apt-get update && sudo apt-get install -y build-essential cmake git libatlas-base-dev
步骤3:构建完整TensorFlow Lite静态库
从TensorFlow Lite根目录构建,确保所有内置算子被编译:
mkdir tflite_build && cd tflite_build cmake ../tensorflow/lite \ -DTFLITE_BUILD_STATIC_LIB=ON \ -DTFLITE_BUILD_ALL_KERNELS=ON \ -DCMAKE_C_COMPILER=gcc-11 \ -DCMAKE_CXX_COMPILER=g++-11 cmake --build . -j$(nproc)
注:指定gcc-11/g++-11是因为Ubuntu 22.04默认的gcc-12部分语法与TFLite代码存在兼容冲突
步骤4:构建最小示例并链接静态库
cd ../.. mkdir minimal_build && cd minimal_build cmake ../tensorflow_src/tensorflow/lite/examples/minimal \ -DTENSORFLOW_LITE_DIR=../tensorflow_src/tensorflow/lite \ -DTFLITE_STATIC_LIB=../tensorflow_src/tflite_build/libtensorflow-lite.a cmake --build . -j$(nproc)
验证运行
将你的TFLite模型传入可执行文件测试:
./minimal path/to/your/model.tflite
内容的提问来源于stack exchange,提问作者Aditya
相关产品推荐
相关产品推荐

