首页IT科技编译kernel 中 app(踩坑记录1——RK3588编译OpenCV)

编译kernel 中 app(踩坑记录1——RK3588编译OpenCV)

时间2025-05-05 15:36:46分类IT科技浏览3947
导读:这两天有在板卡上跑代码的需求,拿到了一块RK3588CPU的板子,型号是HINLINK的HK88....

这两天有在板卡上跑代码的需求            ,拿到了一块RK3588CPU的板子              ,型号是HINLINK的HK88.

以后记录一下调试这个板子的问题     ,便于以后查看

0. 基本信息

板卡系统:ArmBian         ,基于Ubuntu20.04

OpenCV版本:3.4.5

采用方法:交叉编译(先在自己PC上编译               ,再放到板卡上)

PC系统:VMware虚拟机       ,64位Ubuntu20.04

本文的其他参考资料:

资料1

资料2

资料3

为什么采用交叉编译

因为我这个板子没有无线网卡      ,有线网的条件有限        。按照其他人的说法                ,在板子上直接编译也是可行的                 。

1. 步骤

1.0 安装Cmake

在PC端         ,首先安装cmake   ,为了保险也装上gcc和g++      。例如                 ,可以这样安装Cmake:

sudo snap install cmake --classic

除此之外           ,一定也要安装make:

sudo apt install make

在板卡上也要安装Cmake

      。如果板卡能上网,直接安装即可                。如果无法上网               ,还需要离线安装         。

首先下载Cmake:https://cmake.org/download/

然后选择Linux aarch64

下载后到板子的某目录下              ,解压:

tar -xvfz cmake-3.25.1-linux-aarch64.tar.gz

为了方便   ,将解压后的文件夹重命名:

mv cmake-3.25.1-linux-aarch64 cmake

解压后            ,在.bashrc中加入子目录中的bin作为环境变量:

export PATH="/home/wjp/cmake/bin:$PATH"

随后激活并验证

source .bashrc cmake --version

如果这样不成功              ,则参照https://www.cnblogs.com/rainbow-tan/p/14693323.html

1.1 下载

首先下载OpenCV     ,网址:https://opencv.org/releases/

然后下载交叉编译工具链         ,我们是需要从x86_64到aarch64               ,因此选择gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu    。下载地址:https://developer.arm.com/downloads/-/gnu-a

1.2 解压OpenCV和交叉编译工具链

在PC上       ,将下载好的OpenCV压缩包进行解压               。其实放在哪个目录无所谓      ,假设在home下:

unzip opencv-3.4.5.zip

随后进入解压后的文件夹                ,并新建build与install目录            。build用来存放cmake的中间文件         ,install用来存放安装文件   ,将来粘贴到板子上  。

cd opencv-3.4.5 mkdir build mkdir install

同样                 ,解压交叉编译工具链:

tar -xvf gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz

之后将其bin子目录加入.bashrc:

export PATH="/home/wjp/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin:$PATH"

同样需要激活

source .bashrc

1.3 编译OpenCV

首先启动cmake的gui界面:

cmake-gui

Where is the source code 选择OpenCV所在目录           ,Where to build the binaries选择OpenCV下的build文件夹:

之后点左下角的configure,进行如图配置:

点击next               ,然后如图配置:

点击finish              ,成功后   ,在Search栏中搜索PREFIX, 选定安装目录到install文件夹下:

此外CMAKE_BUILD_TYPE设置成RELEASE            ,其他的选项可以个性化配置              ,我就没有更改其他的              。

再次点击configure     ,点击generate               。

成功后         ,进入OpenCV的build目录               ,执行:

sudo make -j4

j后面是进程数       ,不指定也可以。

在编译阶段肯定会报错      ,我遇到的错误有两个                ,第一个是:

解决方法:按照提示找到路径         ,即3rdpatry/carotene/hal/carotene/Cmakefiles/carotene_objs.dir   ,找到里面的build.make和flags.make                 , 将里面的ipcp-unit-growth全部替换为ipa-cp-unit-growth           。

第二个是:

fetal error : no such file or dictionary: zlib.h

是报找不到zlib.h头文件的错误                  。一开始我去zlib的官网安装zlib           ,但是没有用,解决的方法是:不要用外部的zlib               ,直接用OpenCV目录里的zlib              ,即./opencv-3.4.5/3rdparty/zlib/zlib.h

于是   ,哪个文件报找不到zlib.h            ,就直接更改include即可. 即:

将报错行的#include 或#include "zlib.h"改成相对路径              ,让它引用到./opencv-3.4.5/3rdparty/zlib/zlib.h:

例如./opencv-3.4.5/3rdparty/libpng/pngstruct.h中的#include "zlib.h"改为

#include "../zlib/zlib.h

成功后 执行

sudo make install

1.4 将OpenCV移动到板卡上

上一步执行完毕后     ,install文件夹里应该就有东西了   。我们只需要这个文件夹         ,但是不要直接复制粘贴               ,因为里面的一些so文件是不可以复制粘贴的        。为此       ,我们先把install打包:

tar -cvf install.tar install

随后将install.tar放到板卡某路径下      ,例如/home/wjp, 并解压:

tar -xvf install.tar

随后要做两处更改                ,一是在/etc/ld.so.conf中增加:

cd /etc sudo vim ld.so.conf

末尾增加:

/home/wjp/install/lib

然后在ld.so.conf.d中新建opencv.conf:

cd ld.so.conf.d sudo vim opencv.conf

编写内容:

/home/wjp/install/lib

1.5 测试

采用OpenCV提供的sample简单测试

cd ~/opencv-3.4.5/samples/cpp/example_cmake

在里面的CMakeLists.txt加入OpenCVConfig.camke所在路径, 我的为/home/wjp/install/share/OpenCV

即在line11 find_package(Opencv REQUIRED)之后加上

set(OpenCV_DIR /home/wjp/install/share/OpenCV)

随后执行

cmake . make ./opencv_example

不报错即可

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
hosts文件127.0.0.1(Hosts文件的作用)