两种方法交叉编译并移植 OpenCV

绪论

        由于项目需要在嵌入式平台上使用 opencv,故需要交叉编译移植。

1.编译出错

        第一次尝试交叉编译opencv是在虚拟机 Ubuntu环境下,我下载的交叉编译工具链的版本较低(4.5.1版本),因此我选择了低版本的opencv 3.4.16。没想到的时任然出现了问题,在这里展示部分报错,还望各路大神能够帮我指点迷津!

使用arm-linux-gcc 4.5.1交叉编译opencv 3.4.16 部分报错展示

2.转换思路

        在尝试了各种办法,但仍未能解决问题,我选择了妥协……转而使用arm-linux-gnueabi 7.5.0版本的交叉编译工具成功编译通过。下面我将展示两种不同的cmake构建方式来交叉编译opencv3.4.16,如有不恰当的言语或描述,还望大神们不吝赐教。 

2.1 采用 CMake-GUI的方式交叉编译

        在有终端显示的Linux 系统下进行交叉编译,使用cmake-gui的方式无疑是一种操作简单、高效的构建方式,对于初学者来说十分友好。

2.1.1 下载opencv源码

        居然是需要交叉编译移植,那么源代码就是必不可少的。笔者这里下载了opencv 3.4.16,Ubuntu 18.04 LTS下面就以这个版本为例。

        

http://opencv.org为opencv官网,你还可以直接进入github上进行下载,只不过网速可能会限制。

下载完成解压进入目录,如下图所示。

图中build、build_ARM、build-linux都是笔者自行创建的,后面会逐个解释。

2.1.2 创建 build_ARM文件夹 安装cmake

mkdir build_ARM  创建用于存放opencv源码交叉编译的目录

sudo apt install cmake
sudo apt-get install cmake-gui

        安装完成后查看cmake版本,若能正常显示版本则表明安装成功。

2.1.3 安装opencv前安装环境依赖 

 sudo apt-get install build-essential
sudo apt-get install libopenblas-dev
sudo apt-get install git pkg-config libavcodec-dev libavformat-dev libswscale-dev
# 处理图像所需的包
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libdc1394-22-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
# 处理视频所需的包
sudo apt-get install libxvidcore-dev libx264-dev 
# 优化opencv功能
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install ffmpeg
 

————————————————————————                        此处参考博文:
https://blog.csdn.net/lyc_daniel/article/details/133439255?spm=1001.2014.3001.5501

2.1.4 安装交叉编译工具链

        由于是交叉编译,这里就不得不提到一个重要的工具——交叉编译工具链。如果未安装交叉编译工具链,需要先安装交叉编译工具链并配置环境变量。笔者此处使用arm-linux-gnueabi 7.5.0版本的交叉编译工具。如需下载,请之家点击下方链接!Linaro Releases

解压后打开如下图所示:

复制bin目录的路径,同时打开家目录下.bashrc,配置交叉编译工具链环境变量并保存。

2.1.5 开始构建

        进入之前创建的build_ARM目录,用sudo cmake-gui命令打开cmake

         

分别将opencv源代码路径和构建路径配置正确。点击Tools,选择 交叉编译器,点击“NEXT”。

选择系统为Linux,处理器为arm,编译器中找到gcc和g++的路径,如下图所示。
(C、C++、Target Root均来自该编译器目录,其他Target Root选择lib文件夹)
其他默认,完成点“Finish”。
 

 2.1.6 勾选BUILD_ZLIB并配置安装路径

在完成上述操作后点击Configure、再点击Generate,红色消失就欧克! 

2.1.7 开始编译 

用 sudo make -j8命令,启动8个线程开始编译

2.1.8 安装opencv到指定目录 

        用sudo make install命令,将交叉编译的opencv安装到2.16中指定的/usr/local/opencv-3.4.16-arm-linux目录中.

2.1.9 配置opencv依赖的环境变量


打开 /etc/ld.so.conf.d/opencv.conf ,输入以下内容。

 保存并退出后用 “sudo ldconfig”命令来是该变量生效。

用 “sudo gedit /etc/bash.bashrc”(vim 打开也可),写入pkg-config的路径,如下图所示。

保存退出后用“source /etc/bash.bashrc ”命令使环境变量生效,用“sudo updatedb”再做更新。

2.2 采用脚本进行交叉编译
        

        在上文中笔者介绍了通过CMake -GUI的方式来构建工程,该种方式十分方便、快捷也非常容易上手,但是存在一定的局限性。比如在一些没有终端的设备上就无法通过编辑GUI的方式来快速构建工程,这时脚本就很好地解决了这一缺陷。

2.2.1  arm-toolchain.cmake

        打开opencv 3.4.16 源码文件,建立build-linux文件夹,用于保存编译结果文件,同时在源码顶层目录中建立arm-toolchain.cmake 文件。

        

顶层目录展示

 arm-toolchain.cmake 文件展示

        在build-linux文件夹中创建 build-linux.sh 文件 。

build-linux 文件展示

build-linux.sh 脚本文件展示 

  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值