阿里的MNN源码如何编译成so文件,供Android调用

在Ubtuntu下面的编译,先整理编译环境

1、安装环境依赖

# 安装必要工具

sudo apt update

sudo apt install -y cmake ninja-build git wget

# 安装Android NDK(建议使用r21版本或更高)

wget https://dl.google.com/android/repository/android-ndk-r25b-linux.zip

unzip android-ndk-r25b-linux.zip

export ANDROID_NDK_HOME=$PWD/android-ndk-r25b

2、再下载源码

git clone https://github.com/alibaba/MNN.git

cd MNN

3、编译

mkdir build && cd build

# 基础编译配置(armeabi-v7a架构,启用NEON优化,关闭GPU)

cmake .. \

-DMNN_BUILD_FOR_ANDROID=ON \

-DANDROID_ABI=armeabi-v7a \

-DMNN_USE_NEON=ON \

-DMNN_USE_OPENCL=OFF \

-DMNN_USE_CUDA=OFF \

-DMNN_USE_METAL=OFF \

-DMNN_BUILD_MINI=OFF \

-G Ninja

可选参数说明

  • -DMNN_USE_OPENCL=ON:启用 GPU 加速(需设备支持 OpenCL)。
  • -DMNN_BUILD_MINI=ON:精简版(减少包大小,但限制固定输入尺寸)。
  • -DANDROID_ABI:选择目标架构(如arm64-v8ax86)。

4、编译so

ninja -j$(nproc)

5、集成

1)将libMNN.so复制到 Android 项目的app/src/main/jniLibs目录下。

2)在build.gradle中配置 NDK 架构:

android {

defaultConfig

{

ndk

 {

abiFilters "armeabi-v7a", "arm64-v8a" // 根据需求选择 }

}

}

验证测试

使用 MNN 提供的示例代码测试推理功能,或通过以下命令运行单元测试:

bash

cd build/android
adb push test/MNNTest /data/local/tmp/
adb shell /data/local/tmp/MNNTest

注意事项

  • 模型转换:若需加载第三方模型(如 TensorFlow/PyTorch),需先用MNN-Converter工具转换为.mnn格式。
  • 性能优化:根据设备特性调整编译参数(如启用 FP16/Int8 量化)。
  • 依赖项:若需使用 MNN-CV 模块,需额外编译并链接相关库。

通过以上步骤,即可在 Android 应用中使用 MNN 进行大模型推理,支持语音交互等功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/72883.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

吴恩达机器学习笔记复盘(六)梯度下降算法

简介 梯度下降(Gradient Descent)是一种常用的优化算法,广泛应用于机器学习、深度学习等领域,在这里是用于求J(w,b)局部最小值。 我自己觉得这样说有点过于抽象。换个直观点的说法就是,一个人…

使用JAVA-进行维吉尼亚密码的解密与加密

维吉尼亚密码 来源于百度百科 维吉尼亚密码_百度百科 具体代码 import java.util.*;public class WJMYmm {//常量 26public static final int N 26;//密码public static void main(String[] args) {//字母String ZM"abcdefghijklmnopqrstuvwxyz";char[] zm ZM.…

Java DelayQueue 延迟队列

Java DelayQueue 延迟队列 1. DelayQueue 概述 DelayQueue 是 Java 并发包(java.util.concurrent)中的一个 无界 阻塞队列,用于存储实现了 Delayed 接口的元素。队列中的元素只有在达到指定的延迟时间后才能被获取。 2. DelayQueue 的底层…

LeetCode 解题思路 22(Hot 100)

解题思路: 递归思路: 传入当前节点的最小值和最大值,递归判断左右子树。结束条件: 当前节点为空或不满足二叉搜索树。 Java代码: class Solution {public boolean isValidBST(TreeNode root) {return isValidBST(ro…

乐享数科:政策助推假日经济,2月普惠金融-景气指数稳中有升

数据显示,2025年2月普惠金融-景气指数达48.99点,较1月上升0.03点。 企业运行持续向好,企业信心预期和经营活力回升。“假日经济”与“政策效应”相互叠加,市场供求格局有所改善,景气水平稳步恢复。 普惠金融-景气指数…

leetcode日记(108)验证回文串

看上去很简单,其实很麻烦。 一开始写的递归,但是内存超限……搜了下发现原因是每次递归调用都会创建一个新的字符串副本,这在处理长字符串时会占用大量内存。 class Solution { public:bool isPalindrome(string s) {if(s.size()0||s.size(…

用css绘制收银键盘

最近需求说需要自己弄个收银键盘&#xff0c;于是乎直接上手搓 主要基于Vue3写的&#xff0c;主要是CSS <template><view class"container"><view class"info"><image class"img" src"" mode"">&l…

智能车间管理系统(源码+文档+讲解+演示)

引言 在现代制造业中&#xff0c;智能车间管理系统正成为推动工业4.0和智能制造的关键力量。它通过整合先进的信息技术和自动化技术&#xff0c;优化生产流程&#xff0c;提高生产效率&#xff0c;降低成本&#xff0c;并确保产品质量。 系统概述 智能车间管理系统采用前后端…

Model Context Protocol - Prompts

1. 概述 Model Context Protocol (MCP) 提供了一种标准化的方式&#xff0c;使服务器能够向客户端暴露提示模板&#xff08;prompts&#xff09;。Prompts 是服务器提供的结构化消息和指令&#xff0c;用于与语言模型进行交互。客户端可以发现可用的提示、获取其内容&#xff…

办公自动化:使用 Python 生成 Word 文件:自动生成数据库文档 Word 文件

简简单单 Online zuozuo :本心、输入输出、结果 文章目录 办公自动化:使用 Python 生成 Word 文件:自动生成数据库文档 Word 文件前言一、环境准备二、编写代码三、编写 Word 模版文件接收数据四、运行代码,生成文件,大功告成五、说明办公自动化:使用 Python 生成 Word 文…

嵌入式GPRS协议面试题及参考答案

目录 GPRS 的全称是什么?简述其核心设计目标。 GPRS 中 DNS 服务器的核心作用是什么? BTS 在 EDGE 升级时需要哪些硬件调整? GPRS 的时隙分配策略如何影响多用户并发? 解释 PDCH(分组数据信道)的动态分配机制。 如何判断天馈接反或鸳鸯线问题? GPRS 的 RLC/MAC 层…

Docker 内部通信(网络)

1. 创建自定义桥接网络 首先&#xff0c;创建一个自定义的Docker网络。这可以通过docker network create命令完成。例如&#xff0c;我们可以创建一个名为my_custom_network的网络&#xff1a; docker network create --driver bridge my_custom_network2. 启动容器并连接到自…

单片机开发资源分析的实战——以STM32F103C8T6为例子的单片机资源分析

目录 第一点&#xff1a;为什么叫STM32F103C8T6 从资源手册拿到我们的对STM32F103C8T6的资源描述 第二件事情&#xff0c;关心我们的GPIO引脚输出 第三件事情&#xff1a;去找对应外设的说明部分 前言 本文章隶属于项目&#xff1a; Charliechen114514/BetterATK: This is…

贪心算法(9)(java)最优除法

题目&#xff1a; 给定一正整数数组 nums,nums中的相邻整数将进行浮点除法。例如&#xff0c;[2,3.4]->2/3/4. 例如&#xff0c;nums [2,3,4]&#xff0c;我们将求表达式的值“2/3/4"。 但是&#xff0c;你可以在任意位置添加任意数目的括号&#xff0c;来改变算…

腾讯云MySQL数据库架构分析与使用场景

TDSQL-C for MySQL TDSQL-C MySQL 版&#xff08;TDSQL-C for MySQL&#xff09;是腾讯云自研的新一代云原生关系型数据库。融合了传统数据库、云计算与新硬件技术的优势&#xff0c;为用户提供具备高弹性、高性能、海量存储、安全可靠的数据库服务。TDSQL-C MySQL 版100%兼容…

荣耀手机卸载应用商店、快应用中心等系统自带的

1.下载abd ADB Download - Get the latest version of ADB and fastboot 2.手机打开开发者选项 3.手机接电脑打开USB调试 4.下载MT管理器查看系统包名 D:\1.LFD\ADB\platform-tools-latest-windows\platform-tools>adb shell adb.exe: no devices/emulators found 这边是…

星型拓扑网络发生网络风暴

在星型拓扑网络中&#xff0c;所有的设备&#xff08;如计算机、打印机等&#xff09;通过一个中心设备&#xff08;通常是交换机或集线器&#xff09;连接在一起。 星型拓扑网络中发生网络风暴时的情况&#xff1a; 网络风暴的表现 1.广播风暴&#xff1a;在星型拓扑中&…

网络流基本概念及实现算法

基本概念 流网络 对于一个有向图, 抽象成水管里的水的模型, 每根管子有容量限制, 计为 G ( V , E ) G (V, E) G(V,E), 首先不考虑反向边 对于任意无向图, 都可以将反向边转化为上述形式 如果一条边不存在, 定义为容量为 0 0 0, 形式上来说就是 c ( u , v ) 0 c(u, v) 0 c(…

【css酷炫效果】纯CSS实现球形阴影效果

【css酷炫效果】纯CSS实现球形阴影效果 缘创作背景html结构css样式完整代码基础版进阶版(动态版) 效果图 想直接拿走的老板&#xff0c;链接放在这里&#xff1a;上传后更新 缘 创作随缘&#xff0c;不定时更新。 创作背景 刚看到csdn出活动了&#xff0c;赶时间&#xff0…

Linux如何在设备树中表示和引用设备信息

DTS基本知识 dts 硬件的相应信息都会写在.dts为后缀的文件中&#xff0c;每一款硬件可以单独写一份xxxx.dts&#xff0c;一般在Linux源码中存在大量的dts文件&#xff0c;对于arm架构可以在arch/arm/boot/dts找到相应的dts&#xff0c;一个dts文件对应一个ARM的machie。 dtsi 值…