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

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

时间2025-08-05 04:27:30分类IT科技浏览5307
导读:这两天有在板卡上跑代码的需求,拿到了一块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
帝国cms7.5(帝国CMS7.0后台关键字中文逗号和空格怎么替换成英文逗号)