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

如何为x86_64系统编译带可选TensorFlow Ops的TensorFlow Lite?

我来分享下我成功用Bazel为arm64和x86_64架构构建支持原生TensorFlow Ops的TensorFlow Lite库的经验,还有你遇到的运行时找不到.so文件的解决方案:

一、用Bazel构建带Flex Delegate的TensorFlow Lite库

要让TFLite支持原生TensorFlow Ops,核心是启用Flex Delegate,下面是针对两种架构的具体构建步骤:

1. 前置准备

  • 确保安装了对应版本的Bazel:TensorFlow的版本和Bazel版本有严格的适配要求,建议参考TensorFlow官方文档确认匹配的版本。
  • 拉取TensorFlow官方源码并进入根目录。

2. 配置编译环境

运行配置脚本./configure,根据你的需求选择:

  • 针对x86_64架构:大部分选项可以直接按回车使用默认值,无需额外交叉编译配置。
  • 针对arm64架构:如果在x86机器上交叉编译,在脚本提示时选择开启交叉编译,指定目标架构为arm64并设置对应工具链路径;如果是在arm64机器上直接构建,配置流程和x86_64一致。

3. 执行Bazel构建命令

x86_64架构(CPU版本)

bazel build --config=monolithic --define=with_select_tf_ops=true -c opt //tensorflow/lite:libtensorflowlite.so

如果需要静态库,只需把目标替换为//tensorflow/lite:libtensorflow-lite.a即可。

arm64架构

  • 直接在arm64机器上构建:使用和x86_64完全一致的命令。
  • 在x86机器上交叉编译:添加arm64专属配置参数:
    bazel build --config=monolithic --define=with_select_tf_ops=true -c opt --config=linux_arm64 //tensorflow/lite:libtensorflowlite.so
    

参数说明

  • --config=monolithic:启用单块构建模式,将所有依赖打包进一个独立库,避免依赖分散导致的加载问题。
  • --define=with_select_tf_ops=true:开启Flex Delegate,让TFLite具备原生TensorFlow Ops的支持能力。
  • -c opt:启用优化编译,大幅提升库的运行性能。
二、解决运行时找不到libtensorflowlite.so的问题

你提到同目录下其他.so文件能正常加载,但这个库不行,大概率是系统库加载路径的配置问题,试试下面的解决方案:

1. 临时指定库加载路径

运行应用前,先设置LD_LIBRARY_PATH环境变量,让系统优先在当前目录查找依赖库:

export LD_LIBRARY_PATH=$PWD:$LD_LIBRARY_PATH
./myapp

2. 永久解决方法

方法一:将库放入系统标准库目录

把编译好的libtensorflowlite.so复制到系统标准库目录(比如/usr/local/lib),然后更新系统库缓存:

sudo cp libtensorflowlite.so /usr/local/lib/
sudo ldconfig

方法二:编译应用时绑定运行时库路径

在编译你的应用时,添加-Wl,-rpath='$ORIGIN'链接参数,让应用自动在自身所在目录查找依赖库:

g++ your_app.cpp -o myapp -L. -ltensorflowlite -Wl,-rpath='$ORIGIN'

3. 额外排查要点

  • 检查库的依赖链:用ldd libtensorflowlite.so查看库本身是否依赖其他未加载的库,如果有,需要将对应依赖库也放到可访问路径。
  • 确认架构匹配:用file libtensorflowlite.so查看库的架构信息,确保和你的应用编译时使用的架构完全一致(比如都是x86_64或arm64)。
  • 修正文件权限:确保libtensorflowlite.so具备可读权限,执行chmod 644 libtensorflowlite.so即可修正。

另外补充一点:因为你构建的库已经集成了Flex Delegate,所以代码里不需要像其他委托类型那样显式创建和安装实例,解释器会在运行时自动启用该委托,这和官方文档的描述一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:32:13