阿里的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.pswp.cn/pingmian/72883.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72883.shtml
英文地址,請注明出處:http://en.pswp.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 值…