Linux下交叉编译opencv以及错误解决

Linux下交叉编译opencv

1、下载opencv源码

下载地址:https://opencv.org/releases/

选择你需要的版本,点击Sources。
在这里插入图片描述
将源码放在ubuntu随便一个目录下并解压
在这里插入图片描述
进入解压好的opencv目录,创建两个文件夹build和install:
在这里插入图片描述

2、cmake-gui配置:

首先打开cmake-gui,若没有,请使用sudo apt-get install安装、
在这里插入图片描述
圆圈处填上opencv源码路径,矩形处填刚刚创建的build路径。
在这里插入图片描述
点击configure
在这里插入图片描述
这两个地方和我选一样的
在这里插入图片描述
Target System →Operating System 填写Linux (L大写,填入其他如:linux-arm,后面configure会出现错误);
Compliers → C and Complier → C++填入对应交叉编译工具链gcc和g++路径;
Target Root: 交叉编译工具链bin目录路径
Finish; 无报错
交叉编译工具自行下载,网上一堆教程。
在这里插入图片描述配置结束就是这样
在这里插入图片描述
在cmake-gui中取消勾选WITH_1394
然后把这个位置换成刚刚创建的install目录:
在这里插入图片描述

3、开始编译

进入build目录,使用sudo make -j4开始编译,这个过程很漫长。。。
在这里插入图片描述
在这里插入图片描述
报错:
在这里插入图片描述
往上翻发现:
在这里插入图片描述
修改这个文件:
在这里插入图片描述
加上这一行,保存、退出,
#define HAVE_PTHREAD
make clean一下,再重新编译
在这里插入图片描述
新错误:
在这里插入图片描述
修改方法:
进入报错文件:
在这里插入图片描述
加上图中这一句:
加上这一行,保存、退出,
make clean一下,再重新编译
在这里插入图片描述
新错误:
在这里插入图片描述
解决方法:
进入${HOME}/opencv-3.3.14/3rdparty/libpng/pngpriv.h
将这一段代码

# if (defined(ARM_NEON) || defined(__ARM_NEON)) && */

改成

# if defined(PNG_ARM_NEON) && (defined(ARM_NEON) || defined(__ARM_NEON)) && \

编译成功:
在这里插入图片描述

4、安装:

在build下面继续执行make install:
在这里插入图片描述
进入install目录查看:
在这里插入图片描述
出现以上文件表示编译成功!

5、编译安装opencv扩展库:

先将opencv_contrib-4.5.2,版本和你编译的opencv版本要一样.

img

找到 OPENCV_EXTRA_MODULES_PATH 项,选择扩展库源码 opencv_contrib目录下的 modules 目录

点击 Configure ,生成配置

点击 Generate ,生成 Makefile

make -j8
make install

生成的扩展库会在install/lib目录下。

6、移植到嵌入式设备上:

将编译好的install文件夹放在板子的任意位置

打开 /etc/ld.so.conf文件

vi /etc/ld.so.conf

添加库的绝对路径,例如:

/usr/install/lib

保存并退出

生效路径

ldconfig

大功告成!

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值