本帖最后由 qiao--- 于 2023-12-18 00:35 编辑
在本篇之前先感谢贴友DDZZ669,因为我在给板子部署环境的时候遇到了一点小问题,后面是通过看这位贴友的帖子才解决的,后面我会提到。
下面开始我们正片。
1.虚拟机上部署qt环境。
在开发qt程序的时候我们一般都是在虚拟机上将程序写好,然后再将写好的程序交叉编译拷贝到板子上,所以虚拟机上的qt开发环境必不可少。
咱们先上qt的下载地址http://download.qt.io/archive/qt/
这个地址可以下载各个环境下的qt环境
这个就是可以在Linux上安装的qt,我们将他下载下来拷贝到我们的虚拟机上。然后赋予这个可执行的权限并执行它。
$ chmod +x qt-opensource-linux-x64-5.13.2.run
$ sudo ./qt-opensource-linux-x64-5.13.2.run
这时就会启动安装界面,直接傻瓜式安装(下一步、下一步)就行了,这里重点说一下都需要安装哪些组件
然后一直点下一步咱们的Linux上的qt环境就搭建好了。
2.qt交叉编译器部署。
这个用到的主要就是官方的SDK,在官方的SDK里面有我们想编译qt的一切工具。他这个SDK和我们前几期的SDK不一样,这个SDK好像是专门用于QT的,具体下载网址也不好找,当时我找了好半天,现在又找不到了,于是我就简单粗暴点,直接把这个SDK放在我的百度网盘链接里有需要的自行下载(附件只能上传100M以内的,所以只能以这种方式,放在文章的最后)。
将我们云盘的SDK下载好传到我们的虚拟机上,执行下面的命令进行安装。后续有提示 [y/N] 时,我们按回车键,默认安装即可。安装完成后,安装的交叉编译工具链都会安装在 /opt/ 目录下。
chmod +x st-example-image-qtwayland-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1-snapshot.sh
./st-example-image-qtwayland-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1-snapshot.sh
每次在自己的QT程序写好后直接执行下面的命令进行编译
source /opt/st/stm32mp1/3.1-snapshot/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
qmake && make
第一行是设置qt编译相关的环境变量。第二行是正式的编译。
我们可以用qmake -v命令来看一下我们的qmake的版本
编译成功后就可以生成我们的可以再板子上运行的可执行文件,这个我们后面再讲。
3.开发板上的qt环境的搭建。
这个就是我开始遇到问题的原因,开始我是想用builtroot重新构建一个有qt环境根文件系统的,但是我害怕有些东西后面可能会出现问题,于是我就在寻找一些可以移植qt到板子上的一些教程,最终在eeworld找到了,我挂上链接:
【嵌入式Qt】嵌入式Linux Qt运行环境搭建 - ARM技术 - 电子工程世界-论坛 (eeworld.com.cn)
我是按照他的这个方法移植到板子上的。但是我成功移植到板子之后发现这个板子的系统OpenSTLinux不支持frameBuf的驱动,而qt的程序运行必须需要frameBuf,所以我们需要给这个系统加上frameBuf的驱动,我们回到虚拟机,在内核源码的目录中打开终端。然后打开图形化配置界面我们来配置frameBuf的驱动。
我们首先要配置官方SDK的环境变量,然后输入 make menuconfig
而我们的frameBuf的驱动在以下的目录中
勾选上后我们从新编译一下我们的内核
make uImage LOADADDR=0xC2000040
编译好以后我们将uImage拷贝到我们板子上的/boot目录下
scp uImage root@192.168.137.12:/boot
然后重启一下开发板,就可以在我们的/dev目录下看到fb0的设备,在原系统中默认是没有这个设备的。
这样我们的板子上的qt环境也就搭建好了。
4.编写第一个qt程序。
第一个qt程序我就先做的简单一下,主要是演示一下如何在虚拟机写程序,交叉编译,然后在板子上运行这个过程。
我们打开QTCreator,创建我们的第一个程序。我们就搞一个日历界面吧,他这里面有现成的图形库,也比较方便。
这里NEW一个工程,一直点下一步就可以。注意Class Info这里按照我这样选就可以。
进入工程后我们可以点击ui界面进行拖拽图形来构建我们自己的界面
注意这里界面宽度我们选择480*272,因为我们的屏幕是这么大的。然后我们可以点击三角形运行标志运行一下。在我们电脑上的运行效果如下所示:
5.移植程序到开发板并运行。
这个程序虽然写好了,但是他不能在我们的板子上跑,我们只有用qmake把它编译一遍才能到板子上跑。
我们配置好环境变量然后进入我们的工程目录用qmake编译。
下面是编译后的结果,可以看到有很多过程文件,其中绿色颜色的就是可以再我们板子上跑的可执行文件
我们接着把它拷贝到我们的板子上:
scp untitled root@192.168.137.12:/home/root/
然后运行它
接下来我们的板子上就有编写的应用程序界面啦
我们也可以进行进行触摸
IMG_7961(1)
总结:ST官方给的SDK包中的资料很完整,可以方便我们开发qt程序,并移植到板子上运行。
qt编译SDK下载:链接:https://pan.baidu.com/s/1by-lfuahiHj3XmvMn82bJA?pwd=1x3g 提取码:1x3g