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/aarch64
cd linaro/aarch64
wget 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.xz
tar xvf gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz
cmake & make
export cross_compile_toolchain=/path/to/linaro/aarch64
mkdir build && cd build
cmake .. \
-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/arm
cd linaro/arm
wget 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.xz
tar xvf gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi.tar.xz
cmake & make
export cross_compile_toolchain=/path/to/linaro/arm
mkdir build && cd build
cmake .. \
-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