源码编译 (ARMLinux)

注意: 以下编译方法只适用于release/v2.6.0及之后版本(包括 v2.6.0)。release/v2.3及之前版本(包括 v2.3)请参考release/v2.3源码编译方法

注意: 本编译方法暂时只适用于ARM的设备。

如果您还没有配置好ArmLinux编译环境,请先根据编译环境准备中的内容,根据您的开发环境安装编译ArmLinux预测库所需的编译环境。

  1. # 1. 下载Paddle-Lite源码 并切换到release分支
  2. git clone https://github.com/PaddlePaddle/Paddle-Lite.git
  3. cd Paddle-Lite && git checkout release/v2.6
  4. # (可选) 删除此目录,编译脚本会自动从国内CDN下载第三方库文件
  5. # rm -rf third-party
  6. # 2. 编译Paddle-Lite Linux(arm)预测库 (armv8, gcc编译)
  7. ./lite/tools/build_linux.sh

提示: 编译过程中,如出现源码编译耗时过长,通常是第三方库下载过慢或失败导致。请在git clone完Paddle-Lite仓库代码后,手动删除本地仓库根目录下的third-party目录。编译脚本会自动下载存储于国内 CDN 的第三方依赖的压缩包,节省从git repo同步第三方库代码的时间。

编译结果

位于 Paddle-Lite/build.lite.linux.armv8.gcc/inference_lite_lib.armlinux.armv8 :

  1. inference_lite_lib.armlinux.armv8
  2. ├── cxx C++ 预测库和头文件
  3. ├── include C++ 头文件
  4. ├── paddle_api.h
  5. ├── paddle_image_preprocess.h
  6. ├── paddle_lite_factory_helper.h
  7. ├── paddle_place.h
  8. ├── paddle_use_kernels.h
  9. ├── paddle_use_ops.h
  10. └── paddle_use_passes.h
  11. └── lib C++ 预测库
  12. ├── libpaddle_api_light_bundled.a C++ 静态库
  13. └── libpaddle_light_api_shared.so C++ 动态库
  14. ├── demo
  15. └── python Python 预测库demo
  16. └── python Python 预测库(需要打开with_python选项)
  17. ├── install
  18. └── dist
  19. └── paddlelite-*.whl Python whl
  20. └── lib
  21. └── lite.so Python 预测库

编译命令

  • 默认编译方法: (armv8, gcc)
  1. ./lite/tools/build_linux.sh
  • 打印 help 信息:
  1. ./lite/tools/build_linux.sh help
  • 其他可选编译命令:
  1. --arch: (armv8|armv7|armv7hf) arm版本,默认为armv8
  2. --toolchain: (gcc|clang) 编译器类型,默认为gcc
  3. --with_extra: (OFF|ON) 是否编译OCR/NLP模型相关kernel&OP,默认为OFF,只编译CV模型相关kernel&OP
  4. --with_python: (OFF|ON) 是否编译python预测库, 默认为 OFF
  5. --python_version: (2.7|3.5|3.7) 编译whlPython版本,默认为 None
  6. --with_cv: (OFF|ON) 是否编译CV相关预处理库, 默认为 OFF
  7. --with_log: (OFF|ON) 是否输出日志信息, 默认为 ON
  8. --with_exception: (OFF|ON) 是否在错误发生时抛出异常,默认为 OFF

注意:with_python现在仅支持armlinux的本地编译,尚不支持docker环境和ubuntu环境

  • 裁剪预测库方法(只编译模型中的kernel&OP,降低预测库体积),详情请参考: 裁剪预测库
  1. ./lite/tools/build_linux.sh --with_strip=ON --opt_model_dir=YourOptimizedModelDir
  2. # 编译选项说明
  3. --with_strip: (OFF|ON); 是否根据输入模型裁剪预测库,默认为OFF
  4. --opt_model_dir: 输入模型的绝对路径,需要为opt转化之后的模型
  1. --with_rockchip_npu: (OFF|ON) 是否编译编译 huawei_kirin_npu 的预测库,默认为OFF
  2. --rockchip_npu_sdk_root Rockchip NP DDK文件的绝对路径
  1. --with_baidu_xpu: (OFF|ON) 是否编译编译 baidu_xpu 的预测库,默认为OFF
  2. --baidu_xpu_sdk_root Baidu XPU DDK文件的绝对路径