1. 部署Qt应用到板卡

在“Buildroot根文件系统的构建”章节中,我们构建出了最基础的根文件系统,默认没有勾选编译Qt的配置项,那么如何运行Qt程序呢? 当然重新勾选Qt的配置项重新编译根文件系统也是一种方法,但是这种方法不能自由选择Qt版本,一些配置编译选项也可能没有。 因此,对于Buildroot系统往往更倾向于自己下载Qt源码,交叉编译源码后部署到板卡。

本章节将结合 《嵌入式Qt应用开发实战指南——基于LubanCat-i.MX6ULL开发板》 内容进行说明。

1.1. Qt环境搭建

野火提供了搭建好Qt环境的虚拟机,如果不想自己搭建可直接使用野火搭建好的。

百度云链接:https://pan.baidu.com/s/1pXiC0HtTfcQiDN073PyXlA 提取码:hosd ,该虚拟机使用参考链接中的“虚拟机说明.md”。

如果需要自行搭建以下结合Qt应用开发实战指南作简要步骤说明。

1.1.1. Qt环境搭建–X86

参考Qt应用开发实战指南的 Qt环境搭建–X86 章节, 在虚拟机中安装 Qt Creator。

1.1.2. Qt环境搭建–交叉编译

参考Qt应用开发实战指南的 Qt环境搭建–交叉编译 章节, 在虚拟机中安装交叉编译工具链。

1.1.3. Qt环境搭建–ARM

参考Qt应用开发实战指南的 Qt环境搭建–ARM 章节, 在交叉编译Qt源码前需要交叉编译tslib和alsa:

交叉编译tslib和alsa后,再交叉编译Qt源码

以上三者编译成功后,编译生成的产物位于/opt/目录下:

  • tslib:/opt/tslib-1.21

  • alsa:/opt/alsa-lib-1.2.2

  • Qt:/opt/qt-everywhere-src-5.11.3

1.1.4. Qt环境搭建–板卡

将前面编译出的编译产物分别压缩,传到板卡,再进行解压,也可以访问资料网盘/6-开发软件/QT章节脚本与软件/交叉编译好的文件,获取对应编译好的产物。

在“外设接口使能”章节的“开启屏幕接口”小节已经讲解如何开启屏幕显示和触摸,可自行修改设备树,编译并重新烧录来开启屏幕接口。

1.1.4.1. 安装tslib

拷贝tslib-1.21.tar.gz到板卡并解压到/opt目录:

1
tar xvf tslib-1.21.tar.gz -C /opt

配置环境变量,修改/etc/profile文件,在文件末尾添加以下内容:

1
2
3
4
5
6
7
8
export TSLIB_ROOT=/opt/tslib-1.21
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export LD_PRELOAD=$TSLIB_ROOT/lib/libts.so

以上环境变量指定使用/opt/目录下的tslib,避免与系统原有的tslib冲突,然后执行以下命令重新加载配置文件并进行测试:

1
2
3
4
5
#重新加载环境配置
source /etc/profile

#运行测试
/opt/tslib-1.21/bin/ts_test

如果屏幕出现测试界面则配置成功。

1.1.4.2. 安装Qt

拷贝qt-everywhere-src-5.11.3.tar.gz到板卡并解压到/opt目录:

1
2
3
4
5
6
7
#解压
tar xvf qt-everywhere-src-5.11.3.tar.gz -C /opt

#查看文件
ls /opt/qt-everywhere-src-5.11.3
bin  examples  lib      plugins  qtvirtualkeyboard
doc  include   mkspecs  qml      translations
  • examples:该目录包含了大量的Qt示例代码,建议删除。

  • doc:该目录包含Qt的说明文档,建议删除。

  • mkspecs:该目录包含不同平台和编译器的配置文件,用于指导Qt的构建过程,建议删除。

  • translations:目录包含了Qt界面的多语言翻译文件,按需删除。

  • 其他目录需要保留。

配置环境变量,修改/etc/profile文件,在文件末尾添加以下内容:

1
2
3
4
5
6
7
8
9
export QT_ROOT=/opt/qt-everywhere-src-5.11.3
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1
export QT_QPA_FONTDIR=/opt/fonts
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_PLUGIN_PATH=$QT_ROOT/plugins
export LD_LIBRARY_PATH=$QT_ROOT/lib:$QT_ROOT/plugins/platforms
export QML2_IMPORT_PATH=$QT_ROOT/qml
export QT_QPA_FB_TSLIB=1

值得注意的是QT_QPA_FONTDIR指定了字体文件目录,可自行添加字体到/opt/fonts目录, 此处提供作者提前下载好,可免费商用的 思源宋体 方便大家测试,也可自行下载其他字体。

环境配置好后可在虚拟机交叉编译Qt程序传到板卡运行,作者此处提供编译好的Qt官方例程供大家测试:

将字体和测试程序传到板卡,然后运行测试:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#解压字体文件
tar xvf fonts.tar.gz -C /opt/

#重新加载环境配置
source /etc/profile

#给测试程序加运行权限
chmod 777  analogclock
chmod 777  basiclayouts

#运行测试
./analogclock

./basiclayouts

效果如下:

../../_images/add_qt_0.jpg
../../_images/add_qt_1.jpg