得到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动态库放入与可执行文件相同的路径下,运行可执行文件即可。亲测有效。

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

最新文章

  1. Sublime Text3配置在可交互环境下运行python快捷键
  2. Cygwin中解决vi编辑器方向键和Backspace键不好使、安装vim的方法
  3. 【三石视频教程】当FineUIPro遇到ReportViewer
  4. ORA-00911: invalid character --- 字符集的问题
  5. markdown测试
  6. 找出如下数组中最大的元素和最小的元素, a[][]={{3,2,6},{6,8,2,10},{5},{12,3,23}}
  7. sqlmap笔记本
  8. chrome调试js工具的使用
  9. 【学习笔记】【C语言】算术运算
  10. 17.1.1 How to Set Up Replication 设置复制:
  11. 基于python做的抓图程序1.0.00版本
  12. c# 6.0 学习笔记
  13. 有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
  14. hdu(预处理+线段树)
  15. java基础学习系列二
  16. 使用Promise发送多个异步请求, 全部完成后再执行
  17. socks-proxy---with ssh
  18. codeforces625C
  19. Vue源码
  20. day29 socketsever ftp功能简单讲解

热门文章

  1. Axios +Vue + themeleay
  2. X活手环的表盘自定义修改
  3. SpringBoot内置tomcat启动过程及原理
  4. tomcat下找不到运行的程序文件
  5. 学习ASP.NET Core Blazor编程系列十七——文件上传(上)
  6. 4、Idea设置显示多行文件
  7. Hadoop详解(02)Hadoop集群运行环境搭建
  8. vue-element-admin 安装(node方式)
  9. CSS 奇思妙想之酷炫倒影
  10. [C++]C++11:Function与Bind