构建适用于 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 RPI3、RPI4 和 32 位 Raspberry Pi 操作系统
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/lite/ 中的所有头文件 存储库此外,您还需要来自 FlatBuffers 和 Abseil。

其他

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

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