|
|
|
@ -0,0 +1,45 @@
|
|
|
|
|
# 如何构建raspberry pi下运行的paddle
|
|
|
|
|
|
|
|
|
|
这里考虑的是交叉编译方式,即在Linux-X86环境下构建raspberry pi下可运行的paddle。
|
|
|
|
|
|
|
|
|
|
## 下载较差编译环境
|
|
|
|
|
```
|
|
|
|
|
git clone https://github.com/raspberrypi/tools
|
|
|
|
|
```
|
|
|
|
|
如果host是x86-64环境,选用`arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64`下的作为编译工具。注意,需要系统glibc支持2.14以上。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 编译第三方库
|
|
|
|
|
Paddle在cmake会在编译paddle的时候自动编译依赖的第三方库,不过openblas和protobuf最好还是在编译paddle之前先编译好,这样可以保证编译paddle的时候更加顺畅。
|
|
|
|
|
|
|
|
|
|
### 编译openblas
|
|
|
|
|
```
|
|
|
|
|
git clone https://github.com/xianyi/OpenBLAS.git
|
|
|
|
|
make TARGET=ARMV7 HOSTCC=gcc CC=arm-linux-gnueabihf-gcc NOFORTRAN=1 USE_THREAD=0
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 编译protobuf
|
|
|
|
|
```
|
|
|
|
|
git clone https://github.com/google/protobuf.git
|
|
|
|
|
git checkout 9f75c5aa851cd877fb0d93ccc31b8567a6706546
|
|
|
|
|
cmake ../protobuf/cmake \
|
|
|
|
|
-Dprotobuf_BUILD_TESTS=OFF \
|
|
|
|
|
-DCMAKE_CXX_COMPILER=arm-linux-gnueabihf-g++ \
|
|
|
|
|
-DCMAKE_C_COMPILER=arm-linux-gnueabihf-gcc \
|
|
|
|
|
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
|
|
|
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
|
|
|
-DCMAKE_INSTALL_LIBDIR=lib
|
|
|
|
|
```
|
|
|
|
|
注意:这样编译出来的`libprotobuf.a`和`protoc`都是ARM版本的,而我们需要的是一个x86-64版本的`protoc`,所以需要用host gcc再编译一遍protobuf然后使用其中的`protoc`。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 编译Paddle
|
|
|
|
|
```
|
|
|
|
|
cmake .. -DWITH_GPU=OFF -DWITH_PYTHON=OFF -DWITH_SWIG_PY=OFF \
|
|
|
|
|
-DCMAKE_CXX_COMPILER:FILEPATH=arm-linux-gnueabihf-g++ \
|
|
|
|
|
-DCMAKE_C_COMPILER:FILEPATH=arm-linux-gnueabihf-gcc \
|
|
|
|
|
-DCMAKE_C_FLAGS="-mfpu=neon" \
|
|
|
|
|
-DCMAKE_CXX_FLAGS="-mfpu=neon" \
|
|
|
|
|
-DOPENBLAS_ROOT=openblas \
|
|
|
|
|
-DCMAKE_PREFIX_PATH=protobuf
|
|
|
|
|
```
|