构建适用于 ARM 开发板的 LiteRT

本页介绍了如何为基于 ARM 的计算机构建 LiteRT 库。

LiteRT 支持两种构建系统,但每种构建系统支持的功能并不完全相同。请查看下表,选择合适的 build 系统。

功能 Bazel CMake
预定义的工具链 armhf、aarch64 armel、armhf、aarch64
自定义工具链 更难使用 易于使用
选择 TF 操作 支持 不支持
GPU 代理 仅适用于 Android 支持 OpenCL 的任何平台
XNNPack 支持 支持
Python Wheel 支持 支持
C API 支持 支持
C++ API 支持 Bazel 项目 支持 CMake 项目

使用 CMake 进行 ARM 交叉编译

如果您有 CMake 项目,或者想要使用自定义工具链,最好使用 CMake 进行交叉编译。为此,我们单独提供了一个使用 CMake 进行 LiteRT 交叉编译页面。

使用 Bazel 进行 ARM 交叉编译

如果您有 Bazel 项目,或者想要使用 TF 操作,最好使用 Bazel 构建系统。您将使用集成的 ARM GCC 8.3 工具链与 Bazel 搭配来构建 ARM32/64 共享库。

目标架构 Bazel 配置 兼容的设备
armhf (ARM32) --config=elinux_armhf 搭载 32 位 Raspberry Pi OS 的 RPI3、RPI4
AArch64 (ARM64) --config=elinux_aarch64 Coral、RPI4(搭载 Ubuntu 64 位)

以下说明已在 Ubuntu 16.04.3 64 位 PC (AMD64) 和 TensorFlow devel Docker 映像 tensorflow/tensorflow:devel 上经过测试。

如需使用 Bazel 交叉编译 LiteRT,请按以下步骤操作:

第 1 步:安装 Bazel

Bazel 是 TensorFlow 的主要构建系统。安装最新版本的 Bazel 构建系统

第 2 步:克隆 TensorFlow 代码库

git clone https://github.com/tensorflow/tensorflow.git tensorflow_src

第 3 步:构建 ARM 二进制文件

C 库
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite/c:libtensorflowlite_c.so

您可以在以下位置找到共享库: bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so

如需了解详情,请参阅 LiteRT C API 页面。

C++ 库
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite:libtensorflowlite.so

您可以在以下位置找到共享库: bazel-bin/tensorflow/lite/libtensorflowlite.so

目前,还没有直接提取所需的所有头文件的方法,因此您必须添加 TensorFlow 代码库中 tensorflow/lite/ 中的所有头文件。此外,您还需要 FlatBuffers 和 Abseil 中的头文件。

等等

您还可以使用该工具链构建其他 Bazel 目标。以下是一些有用的目标。

  • //tensorflow/lite/tools/benchmark:benchmark_model
  • //tensorflow/lite/examples/label_image:label_image