完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
Ubuntu18.04交叉编译OpenCV3.4.9和QT5.12.2至ARM64位平台firefly-RK3399 (二)
前言:上一篇博客里介绍了如何交叉编译opencv并将其部署至RK3399开发板上,但由于GTK的问题导致opencv无法使用gui,这篇博客就将介绍如何交叉编译QT,并将其作为gui供opencv使用。 一、环境介绍 Host :PC端ubuntu18.04 64位 Target:ARM64开发板 firefly-RK3399 lubuntu18.04 64位 版本:3.4.9 QT版本:5.9.9&5.12.2 二、PC端交叉编译QT5.9.9 如果有触摸屏需求则需要额外交叉编译tsilb,如果用不到触摸功能则可以不编译, 按照步骤编译完成后部署至开发板上发现虽然选择了linuxfb作为显示驱动,但是会与RK3399上的lubuntu的图形界面冲突,虽然QT的gui程序可以正常运行,但是显示会与系统的图形界面冲突。猜测可能是5.9.9对于基于X11的嵌入式linux系统支持不够好。 三、PC端交叉编译QT5.12.2 由于上一步中交叉编译得到的Qt5.9.9在RK3399上并不能正常使用,于是在firefly的官网上查询了有关firefly-Rk3399对于QT的支持问题,在官网上找到了一个已经交叉编译好的qt5.12.2 将其拷贝并解压至RK3399的/opt目录下,已经附带了一个说明文档如下: # Qt 5.12.2 arm64 ubuntu18.04 Cross Compile Firefly Qt5.12.2 ,Work Environment * Host(x86 PC) : ubuntu 18.04 x86_64 * Target(RK3399, RK3328, PX30): ubuntu 18.04 arm64 ## Host Deployment ```shell $ apt install -y cros***uild-essential-arm64 $ cd firfly_arm64_qt5.12.2_18.04 $ cp -rfd host/opt / $ cp host/opt/qtEnv.sh /etc/profile.d/ reboot Target Deployment $ cd firfly_arm64_qt5.12.2_18.04 $ cp -rfd host/opt/firefly_qt5.12.2_arm64_18.04/ext /opt/firefly_qt5.12.2 $ cp target/qtEnv.sh /etc/profile.d/ $ cp target/qt.conf /etc/ld.so.conf.d $ ldconfig $ reboot # Install base library $ apt install -y libmtdev1 libinput10 libxkbcommon0 libdouble-conversion1 libicu60 libharfbuzz0b #Qt QPA Backends # linuxfb $ export QT_QPA_PLATFORM=LINUXFB $ export QT_QPA_FB_DRM=1 $ demo/analogclock #eglfs $ export QT_QPA_PLATFORM=EGLFS $ export QT_QPA_EGLFS_INTEGRATION=EGLFS_KMS #in minimal ubuntu, use eglfs_kms. $ export QT_QPA_EGLFS_KMS_ATOMIC=1 #use drm atomic api or legacy api(two different) $ export QT_QPA_EGLFS_HIDECURSOR=1 #hide cursor $ demo/openglwindow #xcb (Ubuntu Desktop) $ apt install -y libxcb-icccm4 libxcb-image0 libxcb-shm0 libxcb-keysyms1 libxcb-render0 libxcb-render-util0 libxcb-shape0 libxcb-sync1 libxcb-xfixes0 libxcb-xinerama0 libxcb-xkb1 libxcb-randr0 libsm6 libice6 libxkbcommon-x11-0 $ export QT_QPA_PLATFORM=xcb Cross Compile on Host $ cd example/ $ qmake $ make 分别列举了三种不同显示驱动linuxfb/eglfs/xcb所需要安装的对应依赖,可以根据需求不同在开发板上安装好对应的依赖。 三.RK3399开发板上的部署 上述的说明文档中必须严格按照它的文件路径去安放对应文件,不然运行上述傻瓜式脚本也会出错,实际上只需要像之前一篇配置opencv一样去部署即可,后续的其它软件的移植也可仿照以下两个步骤进行部署。 1. 添加动态库加载路径 运行Vim /etc/ld.so.conf.d/qt.conf,会提示该文件不存在将新建一个新的conf文件,在打开的conf第一行里写上自己第一步解压的qt的lib地址,如 /home/firefly/wangrui/firefly_qt5.12.2/lib 若你是解压在/opt文件夹下则是: /opt/firefly_qt5.12.2/lib vim中输入:wq指令保存并退出,随后运行sudo ldconfig激活生效。 2. 环境变量配置 firefly官方已经给了qt环境变量配置的脚本qtEnv.sh如下: QT5_12_2PATH="/opt/firefly_qt5.12.2" LD_LIBRARY_PATH=$QT5_12_2PATH/lib:$LD_LIBRARY_PATH LIBRARY_PATH=$QT5_12_2PATH/lib:$LIBRARY_PATH C_INCLUDE_PATH=$QT5_12_2PATH/include:$C_INCLUDE_PATH CPLUS_INCLUDE_PATH=$QT5_12_2PATH/include:$CPLUS_INCLUDE_PATH PATH=$QT5_12_2PATH/bin:$PATH PKG_CONFIG_PATH=$QT5_12_2PATH/lib/pkgconfig:$PKG_CONFIG_PATH QT_QPA_PLATFORM_PLUGIN_PATH=$QT5_12_2PATH/plugins export LD_LIBRAY_PATH export LIBRAY_PATH export C_INCLUDE_PATH export CPLUS_INCLUDE_PATH export PKG_CONFIG_PATH export PATH 运行Vim /etc/bash.bashrc 进入编辑模式后,在最后一行将上述的qtEnv的内容全部复制上去,再在后面选择复制对应的显示驱动方式,如export QT_QPA_PLATFORM=xcb,只需要确保第一行qt的文件路径与你开发板上的一致即可,vim中运行:wq保存退出,随后运行source ~/.bashrc激活生效。 至此qt在开发板上的部署就全部完成了,接下来可以运行qt自带的一些示例去检测一下qt是否能在开发板上正常工作。 四.实例交叉编译及运行 若之前按照第二步交叉编译了qt5.9.9则可以在交叉编译后的/qt5.9.9/examples文件夹下找到已经编译好的可执行程序,若没有则可以到5.12.2的源码的example里qmake & make去交叉编译想要测试的程序,这里选择了qt两个示例程序analogclock和dials,时钟显示的gui以及有鼠标交互的旋钮程序,将交叉编译好的程序拷贝至开发板任意目录,并在此目录中运行指令./dials即可,开发板上运行效果如下: 至此代表qt的交叉编译及移植已经成功,下一步就是要将openCV和qt二者结合,在开发板上实现openCV处理qt作为gui显示。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
1760 浏览 0 评论
2096 浏览 1 评论
1771 浏览 1 评论
3106 浏览 1 评论
4025 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-11 09:10 , Processed in 1.085026 second(s), Total 73, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号