得到RK交叉编译器

主要用到这两个,一个gcc的,一个g++的。



这个交叉编译器请自行下载

将交叉编译器添加进path

在 /usr/local 路径下随便创建个 arm 文件夹,然后把整个交叉编译器的文件夹全扔进去

编辑 /etc/bash.bashrc

vi /etc/bash.bashrc

在末尾加上

export PATH=$PATH:/usr/local/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin
export PATH

最后使用这个命令激活一下(不知道能不能称为激活)

source /etc/bash.bashrc

用gcc的交叉编译器试一下,获得下图一样的输出,则没有问题

对MNN进行交叉编译

进入MNN根目录,关于交叉编译的文件在这个路径下

首先回去看一下我们的交叉编译器的名字,叫arm-linux-gnueabihf-gcc、arm-linux-gnueabihf-g++。记住我们用的是arm框架的gnueabihf

打开上述交叉编译路径下的build.sh文件。在namlelist中找到gnueabihf,在下面的代码中找到对应的部分,后面如果嫌交叉编译慢的话可以像下图中第35行一样,将make改为make j8,相当于使用8个线程(好像是)。

打开上述交叉编译路径下的arm.toolchain.cmake文件,找到对应的arm-gnueabihf,将下面的 CMAKE_C_COMPILER 和 CMAKE_CXX_COMPILER 对应的编译器名字改为本文一开始截图中的那两个。

回到MNN根目录,使用下面的指令对MNN进行交叉编译

./project/cross-compile/build.sh

编译完成后MNN根目录下会出现build-arm-gnueabihf文件夹,我们只需要使用里面的 libMNN.soexpress/libMNN_Express.so 两个动态库文件。

对自己的工程进行交叉编译

回到自己工程中的CMakeLists.txt,重新指定gcc和g++编译器,并且重新指定.so动态库的路径。

# set(CMAKE_C_COMPILER gcc)
# set(CMAKE_CXX_COMPILER g++)
# 指定RK交叉编译
set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++) # 指定动态库文件
target_link_libraries(segment ${MNN_DIR}/build-arm-gnueabihf/libMNN.so ${MNN_DIR}/build-arm-gnueabihf/express/libMNN_Express.so)

进入自己工程的build文件夹,重新编译工程

cmake ..
make

将编译好的可执行文件和.so动态库放入板子中运行

在板子中,将刚才编译出来的可执行文件和代码中用到的其他文件(音频文件、模型文件等)按照对应路径进行放置,然后把需要用到的.so动态库放入与可执行文件相同的路径下,运行可执行文件即可。亲测有效。

忘了截图保留运行结果,昨晚把板子还给同事了,这部分就不贴图了。

【KAWAKO】MNN-将推理程序交叉编译成RK1126的可执行文件的更多相关文章

  1. Python使用WMI模块获取Windows系统的硬件信息,并使用pyinstaller库编译打包成exe的可执行文件

    由于公司现阶段大多数应用软件都是基于Windows系统开发和部署,很多软件安装部署都是在windows server 2012.windows server 2008之类的服务器上,部门同事每次测试一 ...

  2. QT程序打包成多平台可执行文件

    一.简述 QT项目开发完成后,需要打包发布程序,在实际生产中不可能把源码发给别人,所以需要将源码打包正可执行文件或者安装程序. 二.设置应用图标 把 ico 文件放到源代码目录下,在QT项目中的'.p ...

  3. go语言在Windows系统下编译成linux系统可执行文件

    package main import ( "fmt" "os" "os/exec" ) //filepath: 要编译的文件的路径 fun ...

  4. RTC定时开机闹钟

    RTC是Real Time Clock的简称,它在硬件电路上单独供电,当系统关机时,CPU和其他外部硬件设备全部掉电,但是RTC仍然继续工作. HWCR (Hibernate Wakeup Contr ...

  5. CentOS6 上OpenWRT交叉编译

    目的不是为了编译固件,而是为了一个是编译可执行文件,放倒op的路由器上跑,另一个目的是安装一些开源软件折腾下(例如ss-lib),需要打包成 .ipk 格式 路由设备信息 erya@ERYA:~$ c ...

  6. c/c++编译器配置(交叉编译重要参数)、交叉编译动态库与as配置、mk初步

    gcc/g++/clang,相当于javac: 了解c/c++编译器的基本使用,能够在后续移植第三方框架进行交叉编译时,清楚的了解应该传递什么参数. clang: clang 是一个C.C++.Obj ...

  7. archlinux安装交叉编译工具链

    1. 在/usr/local下新建文件夹:arm  [guo@archlinux local]$sudo mkdir arm 2. 将交叉编译工具拷贝到arm文件夹中  [guo@archlinux ...

  8. 扩展: 简介pyinstaller: py文件压缩成exe文件

    写在开始: 后缀 .py 的文件, 必须在装有python解释器, 和相对应的模块下才能运行. 对于装13来说,比较不方便. 如果人家电脑上也装上了python解释器,  说不好一眼就看穿了 自己写的 ...

  9. nodejs打包成桌面程序(exe)的进阶之路

    nodejs打包成桌面程序(exe)的进阶之路 node js bat 前端 计划任务 前言:最近的研究,请大佬们细品 第一篇 - 任务计划程序篇 说真的研究到将nodejs打包成可执行的exe文件是 ...

  10. Python代码打包成exe可执行程序

    首先,打包成exe可执行程序是针对windows平台来说的. 目前比较主流的打包工具就是pyinstaller. 参考:Using PyInstaller 首先安装pyinstaller: pip i ...

随机推荐

  1. GitHub上的一个笔记相关小项目

    就是一个笔记屑小项目, C++编写,有想一起开发的私信 AlgorithWeaver/V-note (github.com) 项目名V-note QVQ

  2. 【SQL基础】【记住重命名】高级查询:聚合函数(四舍五入)、分组过滤、排序、

    〇.概述 1.功能概述 高级查询:聚合函数(四舍五入).分组过滤.排序. 2.建表语句 drop table if exists user_profile; CREATE TABLE `user_pr ...

  3. 【云原生 • DevOps】一文掌握容器管理工具 Rancher

    一.容器管理工具 Rancher 介绍Rancher 是一个开源的企业级全栈化容器部署及管理平台,其实就是一个 Docker 的图形化管理界面.它为容器提供基础架构服务,可以让 CNI 兼容的网络服务 ...

  4. ATM购物车项目总结

    目录 项目实现思路 ATM项目 优先实现功能 拆分函数 项目路径展示 项目启动文件 start.py 配置文件 setting.py 日志配置字典 日志函数 展示层 src.py 用户注册 获取用户输 ...

  5. plsql developer切换用户

    方法1: 1.双击plsql developer桌面软件图标启动软件 2.在连接窗口中填写连接信息,连接数据库 3.在新建窗口下拉选项中,选择命令窗口功能 4.在工作区内会出现当前用户连接数据库的窗口 ...

  6. 现代 CSS 高阶技巧,不规则边框解决方案

    本文是 CSS Houdini 之 CSS Painting API 系列第四篇. 现代 CSS 之高阶图片渐隐消失术 现代 CSS 高阶技巧,像 Canvas 一样自由绘图构建样式! 现代 CSS ...

  7. 【机器学习】李宏毅——Anomaly Detection(异常检测)

    异常检测概述 首先要明确一下什么是异常检测任务.对于异常检测任务来说,我们希望能够通过现有的样本来训练一个架构,它能够根据输入与现有样本之间是否足够相似,来告诉我们这个输入是否是异常的,例如下图: 那 ...

  8. 巧如范金,精比琢玉,一分钟高效打造精美详实的Go语言技术简历(Golang1.18)

    研发少闲月,九月人倍忙.又到了一年一度的"金九银十"秋招季,又到了写简历的时节,如果你还在用传统的Word文档寻找模板,然后默默耕耘,显然就有些落后于时代了,本次我们尝试使用云平台 ...

  9. 【机器学习】李宏毅——Flow-based Generative Models

    前文我介绍了部分关于生成学习的内容,可以参考我这篇博文点此 前面介绍的各个生成模型,都存在一定的问题: 对于PixelRNN这类模型来说,就是从左上角的像素开始一个个地进行生成,那么这个生成顺序是否合 ...

  10. 【开源】基于.net6+gtksharp实现的Linux下的图形界面串口调试工具

    背景 22年初从上家互联网公司离职以后,充分认识到互联网行业的风险,公司在没有自身稳定产品的情况下,互联网行业就是一个烧钱的行业,支出远远大于收入来源,上家公司就是如此,12年的公司转瞬间轰然倒地,1 ...