You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Paddle/doc/mobile/cross_compiling_for_raspber...

3.3 KiB

Raspberry Pi平台编译指南

通常有两个方法来构建基于 Rasspberry Pi 的版本:

  1. 通过ssh等方式登录到Raspberry Pi系统上来构建。所需的开发工具和第三方库可以参考 /Dockerfile

  2. 另一个方法是交叉编译。这篇文档介绍在 Linux/x64 上交叉编译Raspberry Pi平台上适用的PaddlePaddle的方法和步骤。

安装交叉编译器

克隆下面 Github repo

git clone https://github.com/raspberrypi/tools.git

即可在 ./tools/tree/master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64 目录里找到交叉编译器 arm-linux-gnueabihf-gcc 4.8.3。运行该编译工具链需要一台 Linux x64 机器上以及 2.14版本以上的 glibc。

配置交叉编译参数

CMake支持交叉编译。PaddlePaddle for Raspberry Pi的配置信息在cmake/cross_compiling/raspberry_pi.cmake

交叉编译Raspberry Pi版本PaddlePaddle库时有一些必须配置的参数

  • CMAKE_SYSTEM_NAMECMake编译的目标平台必须配置为RPi。在设置CMAKE_SYSTEM_NAME=RPiPaddlePaddle的CMake系统才认为在是在交叉编译Raspberry Pi系统的版本并自动编译宿主机版protoc可执行文件、目标机版protobuf库、以及目标机版OpenBLAS库。

  • RPI_TOOLCHAIN编译工具链所在的绝对路径或者相对于构建目录的相对路径。PaddlePaddle的CMake系统将根据该值自动设置需要使用的交叉编译器否则用户需要在cmake时手动设置这些值。无默认值。

  • RPI_ARM_NEON是否使用NEON指令。目前必须设置成ON,默认值为ON

  • HOST_C/CXX_COMPILER宿主机的C/C++编译器。在编译宿主机版protoc可执行文件和目标机版OpenBLAS库时需要用到。默认设置成环境变量CC的值;若环境变量CC没有设置,则设置成cc编译器。

一个常用的CMake配置如下

cmake -DCMAKE_SYSTEM_NAME=RPi \
      -DRPI_TOOLCHAIN=your/path/to/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64 \
      -DRPI_ARM_NEON=ON \
      -DCMAKE_INSTALL_PREFIX=your/path/to/install \
      -DWITH_GPU=OFF \
      -DWITH_C_API=ON \
      -DWITH_PYTHON=OFF \
      -DWITH_SWIG_PY=OFF \
      ..

其中WITH_C_API=ON表示需要构建推理库。

用户还可根据自己的需求设置其他编译参数。比如希望最小化生成的库的大小,可以设置CMAKE_BUILD_TYPEMinSizeRel;若希望最快的执行速度,则可设置CMAKE_BUILD_TYPERelease

编译和安装

CMake配置完成后执行以下命令PaddlePaddle将自动下载和编译所有第三方依赖库、编译和安装PaddlePaddle。

make
make install

注意如果你曾经在源码目录下编译过其他平台的PaddlePaddle库请先使用rm -rf命令删除third_party目录和build目录以确保所有的第三方依赖库和PaddlePaddle代码都是针对新的CMake配置重新编译的。

执行完安装命令后,your/path/to/install目录中会包含includelib目录,其中include中包含C-API的头文件lib中包含一个Raspberry Pi版本的库。