得到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. pyinstaller 打包多个资源文件到一个可执行文件

    前言 pyinstaller -w: 无终端状态 -F: 打包成一个可执行文件 开始 假设 main.py 脚本调用 test.mp4视频文件(main.py和test.mp4在同一级目录),那么将在 ...

  2. SpringCloud Alibaba(二) - Sentinel,整合OpenFeign,GateWay服务网关

    1.环境准备 1.1Nacos 单机启动:startup.cmd -m standalone 1.2 Sentinel 启动命令:java -Dserver.port=8858 -Dcsp.senti ...

  3. ArcObjects SDK开发 001 ArcObjects SDK 简介

    1.什么是ArcObjects SDK 在网上搜索什么是ArcObjects,会搜到如下的定义. 这个定义比较准确,也比较容易理解. 2.什么是ArcEngine 在网上搜索ArcEngine,一般会 ...

  4. JavaScript入门①-基础知识筑基

    01.JavaScript基础知识 JavaScript(缩写:JS)是一种具有面向对象能力的.解释型的程序语言,基于对象和事件驱动,具有相对安全性的客户端脚本语言.JavaScript是一门完备的 ...

  5. MISC中的图片修改宽高问题

    在做CTF中MISC分类题目时,很常见的一个问题就是修改图片正确的宽与高 (此篇笔记中的内容以ctfshow中MISC入门分类为切入点,感兴趣的同学可以一边做一边有不会的看看,仅供参考,我是菜鸡) 曾 ...

  6. 【数据库】在公司开发过程中总结的SQL编写规范,参考开发手册

    〇.概述 1.常用资料链接 (1)阿里巴巴开发手册 链接:https://pan.baidu.com/s/1OtOFuItDIP7nchfODGIZwg?pwd=htx0 提取码:htx0 2.包含内 ...

  7. vue3 watch笔记

    watchEffect 执行传入的一个函数,同时自动追踪函数中依赖到的数据,并在其依赖变更时重新运行该函数. 并且会在 组件挂载前 立即调用一次,(默认是挂载前,可通过修改 flush 属性改变,后边 ...

  8. JDBC基础学习笔记

    JDBC的理解: JDBC是允许便捷式访问底层数据库的应用程序接口,JDO.Hibernate.MyBatis等只是更好的封装了JDBC. JDBC的连接步骤: 1.注册驱动: //反射机制 Clas ...

  9. Proxmark3 Easy 如何流畅的在Linux中操作?

    前言 Proxmark3 Easy可谓是国内能买到的比较便宜的RFID卡防设备了,曾在部分hv中出现. Proxmark3 Easy是国内简化的一种设备,利用的是较早的Proxmark3的开源,基础的 ...

  10. [深度学习] imgaug库使用笔记

    imgaug是一款非常有用的python图像增强库,非常值得推荐应用于深度学习图像增强.其包含许多增强技术,支持图像分类,目标检测,语义分割,热图.关键点检测等一系列任务的图像增强.本文主要介绍img ...