Environmental Requirements
- cmake (version >=3.10 is recommended)
- protobuf (version >= 3.0 is required)
- gcc (version >= 4.9 is required)
Build Options
When compiling with cmake, you can modify the options in CMakeLists.txt:
- MNN_DEBUG
Defaults OFF, When OFF, remove symbols and build with optimizations.
- MNN_OPENMP
Defaults ON, When OFF, do not use openmp multi-thread.
- MNN_OPENCL
Defaults OFF, When ON, build the OpenCL backend, apply GPU according to setting the forward type to be MNN_FORWARD_OPENCL at inference time.
- MNN_OPENGL
Defaults OFF, When ON, build the OpenGL backend, apply GPU according to setting the forward type to be MNN_FORWARD_OPENGL at inference time.
- MNN_VULKAN
Defaults OFF, When ON, build the Vulkan backend, apply GPU according to setting the forward type to be MNN_FORWARD_VULKAN at inference time.
- MNN_METAL
Defaults OFF, When ON, build the Metal backend, apply GPU according to setting the forward type to be MNN_FORWARD_Metal at inference time, only effective on iOS/macOS.
Steps
Common Preparation
cd /path/to/MNN./schema/generate.sh./tools/script/get_model.sh # optional, models are needed only in demo project
Build on Host
mkdir build && cd build && cmake .. && make -j4
Then you will get the MNN library(libMNN.so)
Cross Compile
Download cross compile toolchain from Linaro. Examples:
aarch64
Download aarch64 toolchain
mkdir -p linaro/aarch64cd linaro/aarch64wget http://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xztar xvf gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz
cmake & make
export cross_compile_toolchain=/path/to/linaro/aarch64mkdir build && cd buildcmake .. \-DCMAKE_SYSTEM_NAME=Linux \-DCMAKE_SYSTEM_VERSION=1 \-DCMAKE_SYSTEM_PROCESSOR=aarch64 \-DCMAKE_C_COMPILER=$cross_compile_toolchain/bin/aarch64-linux-gnu-gcc \-DCMAKE_CXX_COMPILER=$cross_compile_toolchain/bin/aarch64-linux-gnu-g++make -j4
arm
Download arm toolchain
mkdir -p linaro/armcd linaro/armwget http://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabi/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi.tar.xztar xvf gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi.tar.xz
cmake & make
export cross_compile_toolchain=/path/to/linaro/armmkdir build && cd buildcmake .. \-DCMAKE_SYSTEM_NAME=Linux \-DCMAKE_SYSTEM_VERSION=1 \-DCMAKE_SYSTEM_PROCESSOR=arm \-DCMAKE_C_COMPILER=$cross_compile_toolchain/bin/arm-linux-gnueabi-gcc \-DCMAKE_CXX_COMPILER=$cross_compile_toolchain/bin/arm-linux-gnueabi-g++make -j4
