docker编译:
https://github.com/hzung/build-mnn-for-android
我用的win10下的linux子系统,ndk下载:
好像21,22都可以
https://developer.android.google.cn/ndk/downloads/revision_history
不可以的版本:
1. android-ndk-r23-linux
需要升级cmake到3.19以上,否则报错:
An old version of CMake is being used that cannot automatically detect
compiler attributes. Compiler identification is being bypassed. Some
values may be wrong or missing. Update to CMake 3.19 or newer to use
CMake's built-in compiler identification.
2. android-ndk-r15c-linux-x86_64
ndk15rc报错:
Neon double or quad precision register expected
这个错这次没见到:
Could NOT find Protobuf (missing: Protobuf_LIBRARIES Protobuf_INCLUDE_DIR)
下载MNN代码:
https://github.com/alibaba/MNN
MNN CMakeLists.txt
CMakelist.txt 设置MNN_ARM82为ON (低精度需要的动态库)
添加android-NDK:
vim ~/.bashrc
export ANDROID_NDK=/$(ndk电脑的路径)/android-ndk-r21
source ~/.bashrc
查看NDK路径:
echo $ANDROID_NDK
报错:
CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_ASM_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
make: *** No targets specified and no makefile found. Stop.
原因:
没有找到ndk,
原因1:~/.bashrc没有权限。
报错显示:
bash后,报错:
bash: /home/xxxxx/.bashrc: Permission denied
解决方法:
sudo chmod 777 ~/.bashrc
source ~/.bashrc
../build_32.sh继续报错,需要把build文件夹中的内容清空,
再编译
原因2:ndk路径写错了
再Ubuntu子系统里面,区分大小写,Windows盘符必须小写,
比如D盘,子系统中是:
/mnt/d/
修改./bashrc文件,
export ANDROID_NDK=/mnt/d/soft/android-ndk-r23-linux/android-ndk-r23
编译64位ok:
cd /mnt/d/third_partyMNN
./schema/generate.sh
cd MNN/project/android
mkdir build_64 && cd build_64 && ../build_64.sh
make -j4
编译32位报错,build_32.sh
解决方法:换高版本ndk,编译ok。
使用动态库
代码设置
// 创建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");
}
}
文章浏览阅读1.1k次。这个是由于没有按住奥_在执行脚本进行neutron网络服务安装时报错是什么原因?
文章浏览阅读93次。springmvc(view 视图层) ,spring(service业务层) ,Mybatis (dao持久层)1.spring整合springmvc:springmvc配置文件:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans..._
文章浏览阅读212次。德国足球队老将克劳泽,一生四次参加世界杯(2002, 2006, 2010, 2014),总共打入16粒进球,是世界杯进球记录拥有者。他的成功,折射出德国人身上优秀的光芒。●童年克洛泽是在1978年出生在波兰的奥博莱,但那里是波兰最大的德裔民族聚居地。从血统上来讲,克洛泽祖祖辈辈都是日耳曼人,而Klose就是最古老的日耳曼姓氏之一。 造成这一切的都是“历史遗留问题”,奥博莱地区在二..._德国球星克劳泽射门
文章浏览阅读1.6k次。什么是BootStrap框架Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的前端框架,之所以它能够帮我们快速构建一个前端应用是因为它实现了很多默认的网页样式效果,我们只需要引用它实现的效果即可获得一个漂亮的网页Html、Css和BootStrap框架的关系是什么1.bootstrap就是实现了很多..._bootstrap练习题
文章浏览阅读529次。L表示long指针,这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32为操作系统中, long指针和near指针及far修饰符都是为了兼容的作用,没有实际意义。即win32中,long,near,far指针与普通指针没有区别,LP 与P是等效的。P表示这是一个指针。 T表示_T宏,这个宏用来表示你的字符是否使用UNICODE, 如果你的程序定义了_pcstr 变量
文章浏览阅读474次。import numpy as np#创建一位数组arr1 = np.array([1,2,3,4])print(arr1)[1 2 3 4]#创建二维数组(4行3列)arr2 = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])print(arr2)[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]]#查看数组属性print('_在ndarray中用什么函数创建等比数列
文章浏览阅读2k次。第三季的精彩语录值得记录。_tushy face
文章浏览阅读2.4k次。邮件发送与接收,支持163邮箱、outlook邮箱、exchange邮箱依赖的jar包邮件收发公共服务层实现package com.example.demo.service.impl;import com.example.demo.model.EmailMessageBO;import com.example.demo.model.EmailSendBO;import com.example.demo.model.FileBean;import com.example.demo.serv_. 集成&自动化中配置发送邮件节点,发件人邮箱账号支持哪些邮箱类型
文章浏览阅读675次。android 3G pppd 调试记录。1. JAVA 部分android/development/data/etc/apns-conf_sdk.xml ---> system/etc/apns-conf.xml注意 apns 的版本,apn="3gnet"mcc="460"mnc="01"proxy=""port=""user=""server=""password=""type..._pppd 中拨号mcc和mnc 配置
文章浏览阅读697次。1 服务器接口简介此处我使用的服务器接口是使用Flask编写,具体实现代码:# -*- coding: utf-8 -*-from flask import Flask, render_template, jsonify, requestimport timeimport osimport base64app = Flask(__name__)UPLOAD_FOLDER = 'E:\myuploa..._okhttp3上传视频
文章浏览阅读151次。首先从四大组件说起: Activity: 生命周期: activity三种状态:运行(运行在最前端)、停止(不可见,完全被覆盖)、暂停(可见,但前端还有其他activity) 生命周期相关的方法:onCreate-onStart-onResume-onPause-onStop-onDestory-onRestart 切换时如果要保存数据, 可以重写: onSaveInstanceStat..._android必背知识
文章浏览阅读4.1k次,点赞4次,收藏13次。matplotlib的imshow函数在显示灰度图像的时候要设置vmin和vmax2个函数_imshow vmin