源码编译环境准备

Paddle Lite提供了Android/iOS/X86平台的官方Release预测库下载,如果您使用的是这三个平台,我们优先推荐您直接下载Paddle Lite预编译库

您也可以根据目标平台选择对应的源码编译方法,Paddle Lite提供了源码编译脚本,位于lite/tools/文件夹下,只需要“准备环境”和“调用编译脚本”两个步骤即可一键编译得到目标平台的Paddle Lite预测库。

目前支持四种编译开发环境:

  1. Docker开发环境

  2. Linux开发环境

  3. Mac OS开发环境

  4. Windows开发环境

源码编译方法支持如下平台:

1. Docker开发环境

Docker 是一个开源的应用容器引擎, 使用沙箱机制创建独立容器,方便运行不同程序。Lite的Docker镜像基于Ubuntu 16.04,镜像中包含了开发Andriod/Linux等平台要求的软件依赖与工具。

(1) 准备Docker镜像:有两种方式准备Docker镜像,推荐从Dockerhub直接拉取Docker镜像

  1. # 方式一:从Dockerhub直接拉取Docker镜像
  2. docker pull paddlepaddle/paddle-lite:2.0.0_beta
  3. # 方式二:本地源码编译Docker镜像
  4. git clone https://github.com/PaddlePaddle/Paddle-Lite.git
  5. cd Paddle-Lite/lite/tools
  6. mkdir mobile_image
  7. cp Dockerfile.mobile mobile_image/Dockerfile
  8. cd mobile_image
  9. docker build -t paddlepaddle/paddle-lite .
  10. # 镜像编译成功后,可用`docker images`命令,看到`paddlepaddle/paddle-lite`镜像。

(2) 启动Docker容器:在拉取Paddle-Lite仓库代码的上层目录,执行如下代码,进入Docker容器:

  1. docker run -it \
  2. --name paddlelite_docker \
  3. -v $PWD/Paddle-Lite:/Paddle-Lite \
  4. --net=host \
  5. paddlepaddle/paddle-lite /bin/bash

该命令的含义:将容器命名为paddlelite_docker<container-name>,将当前目录下的Paddle-Lite文件夹挂载到容器中的/Paddle-Lite这个根目录下,并进入容器中。

Docker初学者可以参考Docker使用方法正确安装Docker。Docker常用命令参考如下:

  1. # 退出容器但不停止/关闭容器:键盘同时按住三个键:CTRL + q + p
  2. # 启动停止的容器
  3. docker start <container-name>
  4. # 从shell进入已启动的容器
  5. docker attach <container-name>
  6. # 停止正在运行的Docker容器
  7. docker stop <container-name>
  8. # 重新启动正在运行的Docker容器
  9. docker restart <container-name>
  10. # 删除Docker容器
  11. docker rm <container-name>

2. Linux开发环境

准备Android交叉编译环境

交叉编译环境要求:

  • gcc、g++、git、make、wget、python、adb

  • Java environment

  • cmake(建议使用3.10或以上版本)

  • Android NDK (支持ndk-r17c及之后的所有ndk版本, 注意从ndk-r18开始,ndk交叉编译工具只支持clang, 不支持gcc)

安装软件部分以 Ubuntu 为例,其他 Linux 发行版类似。

  1. # 1. Install basic software
  2. apt update
  3. apt-get install -y --no-install-recommends \
  4. gcc g++ git make wget python unzip adb curl
  5. # 2. Prepare Java env.
  6. apt-get install -y default-jdk
  7. # 3. Install cmake 3.10 or above
  8. wget -c https://mms-res.cdn.bcebos.com/cmake-3.10.3-Linux-x86_64.tar.gz && \
  9. tar xzf cmake-3.10.3-Linux-x86_64.tar.gz && \
  10. mv cmake-3.10.3-Linux-x86_64 /opt/cmake-3.10 && \
  11. ln -s /opt/cmake-3.10/bin/cmake /usr/bin/cmake && \
  12. ln -s /opt/cmake-3.10/bin/ccmake /usr/bin/ccmake
  13. # 4. Download Android NDK for linux-x86_64
  14. # Note: Skip this step if NDK installed
  15. # support android-ndk-r17c-linux-x86_64 and other later version such as ndk-r18b or ndk-r20b
  16. # ref: https://developer.android.com/ndk/downloads
  17. cd /tmp && curl -O https://dl.google.com/android/repository/android-ndk-r17c-linux-x86_64.zip
  18. cd /opt && unzip /tmp/android-ndk-r17c-linux-x86_64.zip
  19. # 5. Add environment ${NDK_ROOT} to `~/.bashrc`
  20. echo "export NDK_ROOT=/opt/android-ndk-r17c" >> ~/.bashrc
  21. source ~/.bashrc
  22. # Note: To other ndk version, the step is similar to the above.
  23. # Take android-ndk-r20b-linux-x86_64 as example:
  24. cd /tmp && curl -O https://dl.google.com/android/repository/android-ndk-r20b-linux-x86_64.zip
  25. cd /opt && unzip /tmp/android-ndk-r20b-linux-x86_64.zip
  26. echo "export NDK_ROOT=/opt/android-ndk-r20b" >> ~/.bashrc
  27. source ~/.bashrc

准备ARM Linux编译环境

适用于基于 ARMv8 和 ARMv7 架构 CPU 的各种开发板,例如 RK3399,树莓派等,目前支持交叉编译和本地编译两种方式,对于交叉编译方式,在完成目标程序编译后,可通过 scp 方式将程序拷贝到开发板运行。

交叉编译ARM Linux

编译环境要求

  • gcc、g++、git、make、wget、python、scp

  • cmake(建议使用3.10或以上版本)

安装软件部分以 Ubuntu 为例,其他 Linux 发行版类似。

  1. # 1. Install basic software
  2. apt update
  3. apt-get install -y --no-install-recommends \
  4. gcc g++ git make wget python unzip
  5. # 2. Install arm gcc toolchains
  6. apt-get install -y --no-install-recommends \
  7. g++-arm-linux-gnueabi gcc-arm-linux-gnueabi \
  8. g++-arm-linux-gnueabihf gcc-arm-linux-gnueabihf \
  9. gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
  10. # 3. Install cmake 3.10 or above
  11. wget -c https://mms-res.cdn.bcebos.com/cmake-3.10.3-Linux-x86_64.tar.gz && \
  12. tar xzf cmake-3.10.3-Linux-x86_64.tar.gz && \
  13. mv cmake-3.10.3-Linux-x86_64 /opt/cmake-3.10 && \
  14. ln -s /opt/cmake-3.10/bin/cmake /usr/bin/cmake && \
  15. ln -s /opt/cmake-3.10/bin/ccmake /usr/bin/ccmake

本地编译ARM Linux(直接在RK3399或树莓派上编译)

编译环境要求

  • gcc、g++、git、make、wget、python、pip、python-dev、patchelf

  • cmake(建议使用3.10或以上版本)

安装软件部分以 Ubuntu 为例,其他 Linux 发行版本类似。

  1. # 1. Install basic software
  2. apt update
  3. apt-get install -y --no-install-recomends \
  4. gcc g++ make wget python unzip patchelf python-dev
  5. # 2. install cmake 3.10 or above
  6. wget https://www.cmake.org/files/v3.10/cmake-3.10.3.tar.gz
  7. tar -zxvf cmake-3.10.3.tar.gz
  8. cd cmake-3.10.3
  9. ./configure
  10. make
  11. sudo make install

之后可通过cmake –version查看cmake是否安装成功。

至此,完成 Linux 交叉编译环境的准备。

3. Mac OS开发环境

交叉编译环境要求

  • gcc、git、make、curl、unzip、java

  • cmake(Android编译请使用3.10版本,IOS编译请使用3.15版本)

  • 编译Android: Android NDK (支持ndk-r17c及之后的所有ndk版本)

  • 编译IOS: XCode(Version 10.1)

  1. # 1. Install basic software
  2. brew install curl gcc git make unzip wget
  3. # 2. Install cmake: mac上实现IOS编译和Android编译要求的cmake版本不一致,可以根据需求选择安装。
  4. # (1)在mac环境编译 Paddle-Lite 的Android版本,需要安装cmake 3.10
  5. # mkdir /usr/local/Cellar/cmake/ && cd /usr/local/Cellar/cmake/
  6. # wget https://cmake.org/files/v3.10/cmake-3.10.2-Darwin-x86_64.tar.gz
  7. # tar zxf ./cmake-3.10.2-Darwin-x86_64.tar.gz
  8. # mv cmake-3.10.2-Darwin-x86_64/CMake.app/Contents/ ./3.10.2
  9. # ln -s /usr/local/Cellar/cmake/3.10.2/bin/cmake /usr/local/bin/cmake
  10. # (2)在mac环境编译 Paddle-Lite 的IOS版本,需要安装cmake 3.15
  11. # mkdir /usr/local/Cellar/cmake/ && cd /usr/local/Cellar/cmake/
  12. # cd /usr/local/Cellar/cmake/
  13. # wget https://cmake.org/files/v3.15/cmake-3.15.2-Darwin-x86_64.tar.gz
  14. # tar zxf ./cmake-3.15.2-Darwin-x86_64.tar.gz
  15. # mv cmake-3.15.2-Darwin-x86_64/CMake.app/Contents/ ./3.15.2
  16. # ln -s /usr/local/Cellar/cmake/3.15.2/bin/cmake /usr/local/bin/cmake
  17. # 3. Download Android NDK for Mac
  18. # recommand android-ndk-r17c-darwin-x86_64
  19. # ref: https://developer.android.com/ndk/downloads
  20. # Note: Skip this step if NDK installed
  21. cd ~/Documents && curl -O https://dl.google.com/android/repository/android-ndk-r17c-darwin-x86_64.zip
  22. cd ~/Library && unzip ~/Documents/android-ndk-r17c-darwin-x86_64.zip
  23. # 4. Add environment ${NDK_ROOT} to `~/.bash_profile`
  24. echo "export NDK_ROOT=~/Library/android-ndk-r17c" >> ~/.bash_profile
  25. source ~/.bash_profile
  26. # 5. Install Java Environment
  27. brew cask install java
  28. # 6. 编译IOS需要安装XCode(Version 10.1),可以在App Store里安装。安装后需要启动一次并执行下面语句。
  29. # sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

注意: Mac上编译Paddle-Lite的full_publish版本时,Paddle-Lite所在路径中不可以含有中文字符。

4. Windows开发环境

编译环境需求,目前Windows仅支持X86平台预测库编译。

  • Windows 10 专业版

  • Python 版本 2.7/3.5.1+ (64 bit)

  • pip 或 pip3 版本 9.0.1+ (64 bit)

  • Visual Studio 2015 Update3

环境准备步骤为:

  1. cmake 需要3.15版本, 可在官网下载,并添加到环境变量中。

  2. python 需要2.7 及以上版本, 可在官网下载

  3. git可以在官网下载,并添加到环境变量中