阿里MNN交叉编译android

MNN下交叉编译

预备工作

下载ndk
https://dl.google.com/android/repository/android-ndk-r21-linux-x86_64.zip
下载交叉编译器
https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabi/
按照宿主机类型(这里以X64 Linux为例)选择下载链接, 文件名形如 gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi.tar.xz 下载后解压到任意目录。

MNN CMakeLists.txt

CMakelist.txt 设置MNN_ARM82为ON (低精度需要的动态库)

ndk

vim ~/.bashrc
添加android-NDK
export ANDROID_NDK=/$(path)/android-ndk-r21 
$(path)为自己的路径
source ~/.bashrc`

编译

cd /path/to/MNN
./schema/generate.sh
 cd MNN/project/android
mkdir build_64 && cd build_64 && ../build_64.sh
make -j4

使用动态库

代码设置

// 创建session需要的配置
MNN::ScheduleConfig config;
// 选择Backend
config.type = MNN_FORWARD_CPU;
// 线程数
config.numThread = 2;
// 配置相应的Backend
BackendConfig backendConfig;
// 选择低精度/一般配置计算
backendConfig.precision = BackendConfig::Precision_Low;
// 或者
// backendConfig.precision = BackendConfig::Precision_Normal;
config.backendConfig    = &backendConfig;

android添加库

public class MNNNetNative { // load libraries 
	static { 
	System.loadLibrary("MNN"); 
	System.loadLibrary("MNN_Arm82"); 
	System.loadLibrary("mnncore"); 
	}
}

你可能感兴趣的:(AI)