基于 NXP imx6 平台搭建Qt5 BSP。
1. NXP imx6 yocto 编译
编译文件系统:
MACHINE=xxx(目标板名字) DISTRO=fslc-framebuffer . setup-environment build_fb(目标文件夹)
bitbake fsl-image-qt5
编译后生成的 镜像位于build_fb/tmp/deploy/images/
qt 交叉编译工具链生成
MACHINE=xxx(目标板名字) DISTRO=fslc-framebuffer . setup-environment build_fb(目标文件夹)
bitbake meta-toolchain-qt5
编译后生成的 交叉编译工具链位于build_fb/tmp/deploy/sdk/
交叉编译工具链是xxx.sh,
安装方法:sudo ./xxx.sh 然后一路回车。就会把交叉编译工具链安装到 /opt/fslc-framebuffer下。
编译应用时,先在终端导出交叉编译工具到环境变量:source /opt/fslc-framebuffer/2.5/environment-setup-armv7at2hf-neon-fslc-linux-gnueabi;编写Qt应用时,也需要导入,然后在同一个终端启动qtcreator,否则找不到qmake版本。
2. 组件的添加
当客户要求增减一些库,用yocto编译文件系统是非常方便的,在 build_fb/config/local.conf文件 IMAGE_INSTALL_append (没有可以增加该选项)的“=”后添加相关的库即可,比如:
IMAGE_INSTALL_append = " u-boot-fw-utils openssh-sftp-server \
qtserialbus qtsvg-plugins \
qtvirtualkeyboard \
poppler \
ffmpeg "
如上,添加了qt 虚拟键盘、svg插件、modbus、ffmg等。
3.使用过程中遇到的一些问题、客户需求的简单记录
(1) 编译不过,报错的问题莫名其妙
首先考虑是不是yocto依赖的环境不全,比如uboot始终无法编译通过,安装 u-boot-tools 顺利通过。
其次是yocto的一些某些需要手动链接的文件是否正确链接(某些yocto项目有)。
然后就是其他的一些问题,具体的要看报错信息,比如报错信息如下
warning: libpoppler.so.74, needed by ./libpoppler-glib.so, not found (try using -rpath or -rpath-link)
处理的办法是找到 libpoppler.so.74 ,拷贝到与 libpoppler-glib.so 同目录下。
(2)客户用qt播放mp4视频,报错
Warning: "No decoder available for type 'audio/mpeg, mpegversion=(int)4, framed=(boolean)true,
Warning: "No decoder available for type 'video/x-h264, stream-format=(string)avc, alignment=(string)au
这个问题如果放在Ubuntu上很好处理, # sudo apt-get install grtreamer-1.0-libav 即可。但是在 Linux下,添加 ffmpeg , 生成 libQt5MultimediaGstTools.so.5.12.0,就可以播放视频。
(3) 组件版本的更新
yocto更新组件版本是很简单的,到配置文件中更改版本号就可以了,是可以改成任意版本还是只能改为yocto维护的版本?
比如之前客户要求将qt 升级到5.12.7,当时在yocto中没有找到,但是有 5.14.2,就和客户商量,升级为5.14.2。升级方法如下:yocto工程路径为下
sources/meta-qt5/recipes-qt/qt5/qt5-git.inc
更改
QT_MODULE_BRANCH ?= “5.14”
PV = “5.14.2+git$(SRCPV)”
即可。
如今改为 5.12.7 编译试试。结果是能正常编译,因此暂定可任意更改为客户想要版本。