目前该文章还不是很成熟,先临时记录并实时更新
目录
本案使用的开发板是高通405的开发板,参数如下链接
当前使用是HDMI显示屏进行Qt App开发
目前很不幸运的该离线包的网址已经被墙了,可以通过VPN进行下载
Index of /archive/qthttps://download.qt.io/archive/qt/
另外参考了网友其它帖子的方式,使用迅雷或者其它工具包进行下载,输入使用下面的离线包的url地址
https://download.qt.io/archive/qt/5.14/5.14.2/qt-opensource-windows-x86-5.14.2.exe
https://download.qt.io/archive/qt/5.14/5.14.2/qt-opensource-mac-x64-5.14.2.dmg
https://download.qt.io/archive/qt/5.14/5.14.2/qt-opensource-linux-x64-5.14.2.run
1.下载对应Yocto的meta-qt5版本
查看当前高通带的LE baseline的Yocto版本发现是2.6.4,代号是thud
{$PROJECT_PATH} /LE.UM.5.2.1/apps_proc/poky/meta-poky/conf/distro/poky.conf

然后从github上面下载对应的thud版本的meta-qt5仓库,下载到基线代码的{$PROJECT_PATH}/LE.UM.5.2.1/apps_proc/poky目录下
git clone https://github.com/meta-qt5/meta-qt5.git -b thud

1.1.项目目录结构及介绍
meta-qt5项目遵循了Yocto Project的标准层结构,其主要目录及其功能概述如下:
-
recipes-qt
此目录包含了所有与Qt5相关的软件包食谱(.bbappend, .bb recipes)。每个子目录对应于一个特定的Qt模块或相关工具,如qtbase, qtquickcontrols等,用于定制和编译Qt组件。
-
files
包含了一些额外的文件,比如补丁文件,这些文件可能被用于修改源码以适应特定的构建需求。
-
conf
包含layer.conf文件,这是层的核心配置文件,定义了层的基本属性,如BBLAYERS的添加和其它必要的配置选项。
-
README.md
项目的主要说明文件,提供了快速入门指导和一些基本的信息。
-
LICENSE
列出了项目采用的许可证信息,通常是MIT或其他开源许可协议。
1.2.进行编译
修改在meta-qt5的目录下新建一个machine-image.bbappend文件用来编译meta-qt5相关的包
cd {$PROJECT__PATH}/LE.UM.5.2.1/apps_proc/poky/meta-qt5/
mkdir recipes-products
cd recipes-products
mkdir images
cd images
touch machine-image.bbappend
mkdir qcs40x
cd qcs40x
touch qcs40x-image.inc
recipes-products/ └── images ├── machine-image.bbappend └── qcs40x └── qcs40x-image.inc
machine-image.bbapend内容如下
include ${BASEMACHINE}/${BASEMACHINE}-image.inc
qcs40x-image.inc内容如下,若是想要打包其他的可以按照对应的格式添加
IMAGE_INSTALL += "qtbase"
IMAGE_INSTALL += "qt5ledscreen"
IMAGE_INSTALL += "qtdeclarative"
IMAGE_INSTALL += "qtwayland"
进行全部编译,默认会编译到整个meta-qt5,会在对应的tmp目录下生成对应的libQt5Gui.so等库
cd apps_proc/poky
source build/conf/set_bb_env.sh
export LANG=en_US.UTF-8
build-vt-64-qsap-perf-image
编译成功之后会在{$PROJECT_PATH}/LE.UM.5.2.1/apps_proc/poky/build/tmp-glibc/work/aarch64-oe-linux/qtbase/5.12.6+gitAUTOINC+f0b93f7a4b-r0目录下有相关的Qt库
2.编译Qt5相关的工具链
通过qt5的meta-toolchain-qt5的交叉编译工具链进行编译,这个包除了基础的arm-gcc/g++交叉编译工具还包含了Qt使用的工具,比如qmake, qdbusviewer等工具
编译交叉编译工具
source build/conf/set_bb_env.sh
bitbake meta-toolchain-qt5 //编译qttool等
对应的bb文件
{$PROJECT_PATH}/LE.UM.5.2.1/apps_proc/poky/meta-qt5/recipes-qt/meta/meta-toolchain-qt5.bb
编译过程
编译好的部分工具在如下目录,比如qmake,qdbusviewer等工具都在这个目录下,用来进行一些Qt的简单测试,编译出来的工具在下面路径
{$PROJECT_PATH}/LE.UM.5.2.1/apps_proc/poky/build/tmp-glibc/work/aarch64-oe-linux/qttools/
同时,对应的交叉编译工具成功之后会在{$PROJECT_PATH}/LE.UM.5.2.1/apps_proc/poky/build/tmp-glibc/deploy/目录有sdk

进行安装交叉编译SDK,默认不仅把基础的交叉编译环境进行安装,也会把Qt相关的动态库和工具也会安装到对应的目录
cd {$PROJECT_PATH}/LE.UM.5.2.1/apps_proc/poky/build/tmp-glibc/deploy/sdk/
./oecore-x86_64-aarch64-toolchain-nodistro.0.sh //遇到选择则进行选择Y

安装好的交叉编译工具在当前编译的Ubuntu电脑的下面目录
/usr/local/oecore-x86_64/sysroots
3.编译Qt5相关的应用工程
目前实测有两种方式进行编译Qt5开发的应用程序
1.使用qmake调用交叉编译工具生成的Makefile进行编译
前期调试开发推荐这个方式,这种方式编译和Debug比较快
2.使用bb文件进行编译(后续待补充,使用第1步开发所有的App之后,使用bb进行编译打包进系统)
3.1.使用交叉编译工具编译
//进入Qt5开发的工程源码目录
cd Qt5_Demo
//source上一个章节的安装好的编译工具链
source /usr/local/oecore-x86_64/environment-setup-aarch64-oe-linux
//使用qmake生成Makefile文件
qmake
//使用make进行编译
make -j8
如果在使用qmake之前没有进行source到交叉编译工具,则在Makefile中的CC/CXX引用的工具链是gcc/g++,而并非是交叉编译工具链
