buildroot环境下,手动安装编译opencv,cmake-gui方式

写在前面

移植opencv到arm开发板上,开发板使用buildroot搭建rootfs。手动移植opencv,不使用buildroot自动安装。
编译opencv的交叉编译链需要与buildroot相同。
本开发板是泰山派,rk3566,编译平台:ubuntu18.04
buildroot的交叉编译链在buildroot根目录下的/output/rockchip_rk3566/host/bin中,其中包含c编译器:aarch64-buildroot-linux-gnu-gcc和c++编译器:aarch64-buildroot-linux-gnu-g++

下载opencv源码

opencv网站下载源码OpenCV,这里选择sources 3.4.1。
下载得到opencv-3.4.1.zip,将该压缩包发送到ubuntu任意文件夹中。

编译opencv

解压压缩包
在压缩包所在目录,打开终端,将压缩包解压到指定目录,这里解压到/home/lxy/tspi/中

unzip opencv-3.4.1.zip -d /home/lxy/tspi/

进入opencv源码目录

cd /home/lxy/tspi/opencv-3.4.1/

修改源码
首先在源码目录3rdparty/protobuf/src/google/protobuf/stubs/common.cc 这个文件下第 33 行添加#define HAVE_PTHREAD 宏定义才可以编译的过。具体原因是 HAVE_PTHREAD 宏定义了pthread 库。在如下位置添加即可。(正点原子这样教的)

vi 3rdparty/protobuf/src/google/protobuf/stubs/common.cc

创建build文件夹、install文件夹

mkdir build install

使用cmake-gui构建编译cmake

cd build
cmake-gui

选择源码目录和刚刚创建的build目录,点configure
在这里插入图片描述
按下图选,选择自定义交叉编译链,next
在这里插入图片描述
名字名为 Linux (要严格是Linux)
c编译器选择/home/lxy/tspi/tspi_SDK/buildroot/output/rockchip_rk3566/host/bin/aarch64-buildroot-linux-gnu-gcc
c++编译器选择/home/lxy/tspi/tspi_SDK/buildroot/output/rockchip_rk3566/host/bin/aarch64-buildroot-linux-gnu-g++
Target Root目录选择/home/lxy/tspi/tspi_SDK/buildroot/output/rockchip_rk3566/host/aarch64-buildroot-linux-gnu/sysroot
这里的编译器,不同sdk使用的buildroot编译器可能不同,但是都是在buildroot的putput里,找到大概位置,以gcc结尾是c编译器,以g++结尾是c++编译器。
这里的root目录,选择上述路径,而不是正点原子教程里说的编译器所在的文件夹,之前我选择了host/bin,结果一直编译到63%就失败,浪费很多时间。如果编译失败,不是内存不够,就是cmake配置错了,需要删掉build文件夹内的文件,重新配置cmake。
其他按照图上选,finish。
在这里插入图片描述
完成后,在CMAKE中CMAKE_EXE_LINKER_FLAGS参数,设置为-lpthread -lrt -ldl
在这里插入图片描述
设置CMAKE_INSTALL_PREFIX参数,设置为上述创建的install文件夹
在这里插入图片描述
这里可以设置opencv的其他编译项,比如加模块什么的,这里使用默认参数,直接点Configure,然后点Generate。完成即可关闭页面。

编译opencv

在build路径下,直接编译

make -j 16

编译过程中会有很多警告,不用管,如果想探究,可以看这个教程

执行安装

make install

执行完毕会在install文件夹下有安装文件,如下:

lxy@lxy-virtual-machine:~/tspi/opencv-3.4.1/build$ ls ../install/
bin  include  lib  share

install/lib文件夹下的文件复制到开发板的/usr/lib下即可。
可以将这些文件复制到buildroot的output/rockchip_rk3566/target/usr/lib中,重新编译buildroot后,重新烧录根文件系统。这样,以后更新根文件系统时,不需要重复将这些文件复制了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值