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

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

时间2025-06-20 16:32:34分类IT科技浏览4652
导读:这两天有在板卡上跑代码的需求,拿到了一块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
python 运行命令行的代码(python命令行模式的使用流程)