美文网首页
MNN-Android 编译说明

MNN-Android 编译说明

作者: Gavin_2020 | 来源:发表于2022-07-20 11:04 被阅读0次

一、准备工作

1.准备好Linux(Ubuntu)64位系统,可使用虚拟机VMware Workstation Pro

为什么不在windows下?
此方式编译ncnn库的环境为Linux,所以需要准备好Linux系统或者使用虚拟机安装Linux系统镜像文件.

二、编译步骤

1. 下载MNN库

https://github.com/alibaba/MNN

2. 下载Cmake

下载完毕需要对cmake进行配置,这里就不多描述了。
https://cmake.org/

3. 配置CmakeLists.txt文件(可选)

文件在MNN库下的根目录
这里关闭了动态库编译,也就是使用的是静态库编译

option(MNN_BUILD_SHARED_LIBS "MNN build shared or static lib" OFF)

4. 编写.sh执行命令文件

在MNN根目录创建build_android.sh文件(文件名称自定)


image.png

如下为32位编译例子、这里关闭了部分编译配置。

#!/usr/bin/env bash

##### android 
rm -r android_build
mkdir android_build
pushd android_build
cmake .. \
-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
-DANDROID_ABI="armeabi-v7a" \
-DANDROID_NATIVE_API_LEVEL=android-19  \
    #-DCMAKE_BUILD_TYPE=Release \
   # -DANDROID_ABI="arm64-v8a" \
    #-DANDROID_STL=c++_static \
    #-DMNN_USE_LOGCAT=false \
    #-DMNN_BUILD_BENCHMARK=OFF \
    #-DMNN_BUILD_FOR_ANDROID_COMMAND=false \
    #-DMNN_OPENGL=false \
    #-DMNN_BUILD_TRAIN=false \
    #-DMNN_VULKAN=false \
    #-DMNN_SUPPORT_BF16=false \
    #-DMNN_OPENCL=false -DMNN_ARM82=false \
    #-DNATIVE_LIBRARY_OUTPUT=. -DNATIVE_INCLUDE_OUTPUT=. $1 $2 $3
make -j4
printf "is over" 
popd

5. 执行.sh文件

在MNN根目录打开终端
输入./build_android.sh (我的.sh文件名为build_anroid,可根据自身命名修改)


image.png

6. 提取.s或.so文件

找到MNN根目录的build_anroid文件夹下的.so或.a文件(build_android文件夹也是在编写.sh文件命令自定义的)


image.png

注意:.so静态库和.a动态库使用方式不同,可根据自身需求配置

三、问题汇总

1. 目前编译的64或者32位的.a与.so过大,为9m左右(关闭了部分配置),如果有些必须的配置需要添加可能达到13m+,这里暂时没有找到相关量化的方法。
2. 目前编译完成,还没有通过实际使用,由于本人的项目是要使用.a形式,配合我们的c++项目,进行二次编译.so,最终在android中使用。

初步为编译部分后续会持续更新,仅供参数,可能大家遇到的情况都不一致,欢迎指出错误。

相关文章

  • MNN-Android 编译说明

    一、准备工作 1.准备好Linux(Ubuntu)64位系统,可使用虚拟机VMware Workstation P...

  • ijkplayer 播放器,android平台使用说明

    ijkplayer github 地址 ijkplayer 编译 编译可以参考官方说明 简要步骤�说明: 将代码下...

  • 编译&刷机

    说明:以下所有编译命令均在源码根目录执行操作 一、加载编译环境 二、编译 2.1 编译完整Android Andr...

  • usbwifi网卡mt7601u驱动配置

    目录结构说明 一、环境说明 1、环境介绍 2、确认usbwifi网卡信息 3、相关驱动 二、配置编译驱动 0、编译...

  • 关于Android代码混淆,你了解多少?

    目录 混淆编辑器介绍 功能说明 编译流程 二者区别 使用说明 规则文件说明 组件化混淆 1. 混淆编译器 Andr...

  • protobuf编译( 官方说明)

    Copyright 2008 Google Inc. https://developers.google.com/...

  • linux编译安装说明

    指定安装路径不指定prefix,则可执行文件默认放在/usr /local/bin,库文件默认放在/usr/loc...

  • mysql编译选项说明

    编译选项 来自==MySQL运维内参:MySQL、Galera、Inception核心原理与最佳实践==与mysq...

  • Android P编译说明

    Android编译流程网上有很多的文档,还是按照自己思路简单整理下,不然每次遇到问题都要去搜索。 参考博客 1.h...

  • Golang 交叉编译

    [TOC] 说明 本文交叉编译需要 1.5 以上 Golang Mac 下编译 windows 64 Golang...

网友评论

      本文标题:MNN-Android 编译说明

      本文链接:https://www.haomeiwen.com/subject/uuueirtx.html