You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake生成的TensorFlow Lite 2.4.1共享库无法正常使用问题咨询

Debian 10 编译 TensorFlow Lite 2.4.1 C++ 动态库解决方案

前提说明

  • 系统环境:Debian 10
  • 编译对象:TensorFlow Lite 2.4.1 源码
  • 需求:生成可正常运行的C++版本TFLite动态库,替换官方默认生成的静态库

核心问题原因

默认TFLite的CMake配置未开启共享库导出规则,直接仅修改BUILD_SHARED_LIBS参数生成的动态库会因为核心符号隐藏、依赖无位置无关代码等问题无法正常调用。

正确修改CMake配置步骤

  1. 开启共享库构建与位置无关代码编译
    打开tensorflow/lite/CMakeLists.txt,在文件最开头的项目配置段添加如下配置:
# 开启动态库构建
set(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries" FORCE)
# 全局开启位置无关代码,解决依赖链接重定位错误
set(CMAKE_POSITION_INDEPENDENT_CODE ON CACHE BOOL "Build with PIC" FORCE)
# 关闭符号默认隐藏规则,导出动态库需要的公开符号
set(CMAKE_CXX_VISIBILITY_PRESET default)
set(CMAKE_VISIBILITY_INLINES_HIDDEN OFF)
# 定义TFLite动态库编译宏,匹配源码内的导出标记
add_compile_definitions(TFLITE_SHARED_LIBRARY)
  1. 调整链接规则
    找到TFLite核心库的add_library定义段,确保所有依赖的静态库(如flatbuffers、abseil等)都被完整链接到动态库中,避免运行时依赖缺失:
# 找到对应add_library行,修改为如下格式确保链接所有依赖
add_library(tensorflow_lite ${TFLITE_SRCS})
target_link_libraries(tensorflow_lite
  PRIVATE
  # 原有依赖项保持不变,确保所有静态依赖都在此处声明
  ${TFLITE_DEPENDENCIES}
)
  1. 重新执行编译流程
# 清理原有构建缓存
rm -rf build && mkdir build && cd build
# 执行CMake配置
cmake ../tensorflow/lite
# 并行编译,可根据CPU核心数调整-j后的数值
make -j4

生成结果验证

编译完成后在build目录下生成libtensorflowlite.so,执行如下命令验证可用性:

  • 检查依赖完整性:ldd libtensorflowlite.so,无not found的依赖项即为正常
  • 检查核心符号导出:nm -D libtensorflowlite.so | grep TfLiteInterpreter,有输出结果说明核心API已正常导出

内容的提问来源于stack exchange,提问作者Bhaskar Sarma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:54:04