背景知识
在阅读本章前,如果对下面所列举的知识点有一定的了解,将有助于更好的理解本章内容。
- C++基础知识,了解简单的类,继承,重载等面向对象概念;
- Linux基础知识,了解基本的Shell命令,懂得对Linux进行简单的配置;
- 嵌入式开发基础知识,了解基本的嵌入式开发流程,了解简单的嵌入式开发工具的使用;
- 交叉编译与动态库的基础知识。
Qt介绍
Qt简介
Qt 是一个跨平台应用程序和 UI 开发框架。使用 Qt只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。Qt原为奇趣科技公司(Trolltech , www.trolltech.com)开发维护,后被nokia公司收购。2012年8月9日,Digia宣布已完成对诺基亚Qt业务及软件技术的全面收购。2014年4月,跨平台的集成开发环境Qt Creator3.1.0发布,同年5月20日配发了Qt5.3正式版,至此Qt实现了对iOS、Android、WP等各平台的全面支持。
Qt/E简介
Qt/E在原始Qt的基础上,做了许多出色的调整以适合嵌入式环境。同Qt/X11相比,Qt/E很节省内存,因为它不需要X server或是Xlib库,它在底层摒弃了Xlib,采用framebuffer作为底层图形接口。Qt/E的应用程序可以直接写内核帧缓冲,因此它在嵌入式linux系统上的应用非常广泛。
QT应用编译测试
SAIL-RK3568在编译buildroot文件系统时已编译Qt,Qt版本为qt5.15.2。
这里以编译QT演示例程analogclock为例进行编译。
首先需要找到qmake以及analogclock演示例程的路径,先找qmake路径,进入SAIL-RK3568源码编译出的buildroot文件系统路径,如下图所示:
开始找qmake所在目录,执行命令:
$ find . | grep bin/qmake
如下图所示:
用同样的方法查找analogclock,执行命令:
$ find . | grep example | grep analogclock.pro
如下图所示:
可以看到找到了两个例程,分别在widgets模块下和gui模块下。这里选择编译widgets模块下的analogclock演示例程。
通过上面的方法找到了qmake和analogclock例程的路径:
qmake:
~/dianyu/sail_rk356x_linux_release_v1.3.0_20220620/buildroot/output/rockchip_rk3568/build/qt5base-5.14.2/bin/qmake
analogclock:
~/dianyu/sail_rk356x_linux_release_v1.3.0_20220620/buildroot/output/rockchip_rk3568/build/qt5base-5.14.2/examples/widgets/widgets/analogclock/analogclock.pro
进入analogclock例程源码目录下,如下图所示:
在analogclock例程下执行qmake生成Makefile文件,注意这里的qmake需要指定为SAIL-RK3568开发板所用的qmake,即上面通过命令查找到的qmake,使用绝对路径防止出错,如下图所示:
执行命令$ make 开始编译,如下图所示:
编译完成后生成analogclock,如下图所示:
将生成的analogclock文件通过U盘或TF卡拷贝到SAIL-RK3568开发板。
U盘默认挂载在/media/udisk0
TF卡默认挂载在/media/sdcard0
本文档使用U盘进行拷贝,执行如下命令:
$ cp /media/udisk0/analogclock /userdata # 拷贝 analogclock 文件到 /userdata 目录
$ cd /userdata/ # 进入 /userdata 目录
$ chmod +x analogclock # 给 analogclock 可执行权限
$ ./analogclock # 运行 analogclock 程序
运行成功,如下图所示:
屏幕显示如下图所示:
至此,完成Qt演示例程的编译及运行。