基于petalinux的qt5交叉编译opencv:解决报错find_package和Unknown CMake command “QT5_ADD_RESOURCES“

📄 AI 智能文档扫描仪 -

基于OpenCV透视变换算法,提供文档自动扫描与矫正服务,支持边缘检测、歪斜拉直及去阴影增强,集成WebUI,纯算法零依赖版

工作中,利用petalinux软件编译了xilinx fpga的arm linux系统,在配置时选择了添加qt5。

在pc机ubuntu中工作时,直接apt安装的qt5,在编译opencv的时候选择-D WITH_QT=ON就直接编译成功,可以使用opencv的imshow功能展示图片了。

但是对于arm开发板移植,在电脑上通过petalinux安装qt5后,他出现在的位置时导出sdk的路径,也就是构建的根文件系统sysroot路径下。这时如果在交叉编译工具链里交叉编译opencv,cmake时只是添加-D WITH_QT=ON的话会报错,说qt找不到(find package失败),直接导致highgui模块的qt命令”QT5_ADD_RESOURCES“失效:

我明明在交叉编译的时候已经指定了-D CMAKE_SYSROOT=/opt/petalinux/2023.1/sysroots/cortexa72-cortexa53-xilinx-linux,怎么还是说找不到呢?

网上所有的解决方法基本都是说直接在cmakelist里添加set(Qt5_DIR),但是没有任何作用,无论指定什么都找不到qt5。更有甚者说QT5_ADD_RESOURCES改成小写,更是荒唐可笑,怎么可能是这个原因呢

最后解决还是看了报错内容,是说缺少OE_QMAKE_PATH_EXTERNAL_HOST_BINS,也就是qt现在不在电脑的系统库里,是在sdk的sysroot里,属于”外部主机路径“,使用以下命令:

which qmake

就可以看到qmake的位置并不是/opt/petalinux/2023.1/sysroots/cortexa72-cortexa53-xilinx-linux,而是在/opt/petalinux/2023.1/sysroots/x86_64-petalinux-linux。所以找不到。这是因为x86_64-petalinux-linux表示是电脑主机文件夹,cortexa72-cortexa53-xilinx-linux是目标设备文件夹,qt的so库文件都在cortexa72-cortexa53-xilinx-linux里,但是编译用到的qmake却在主机路径里。

之后需要编译的时候加上qmake的“主机工作路径”:-D OE_QMAKE_PATH_EXTERNAL_HOST_BINS=/opt/petalinux/2023.1/sysroots/x86_64-petalinux-linux/usr/bin 即可解决问题,成功交叉编译。

您可能感兴趣的与本文相关的镜像

📄 AI 智能文档扫描仪 -

📄 AI 智能文档扫描仪 -

图片编辑
Python
PyTorch

基于OpenCV透视变换算法,提供文档自动扫描与矫正服务,支持边缘检测、歪斜拉直及去阴影增强,集成WebUI,纯算法零依赖版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值