移植Qt5.12.9

一、获取和编译tslib

要想 Qt 支持触摸还需要编译 tslib,以生成触摸相关插件。Tslib 一般在嵌入式系统时用的多,基本的触摸插件都是它。当然还有 xinput 这样的插件,那是用于桌面系统的。嵌入式 Qt一般用的都是 Tslib

关于这一部分,我们在之前都编译过,请查看
tslib
在这一章有介绍。

二、编译ARM平台Qt5.12.9源码

本章简介如何下载 Qt 源码。编译出相应的 Qt 库。在 Windows 平台下的库,后缀一般都是dll,Linux 平台的库后缀都是 so。我们能看到的这些库都叫动态库。运行 Qt 应用程序就需要链接到这些动态库上面。正是因为有这些库的存在,Qt 应用程序才能正常运行。

1. 下载Qt5.12.9源码

我们可以在Qt下载地址https://download.qt.io/找到https://download.qt.io/archive/qt/5.12/5.12.9/single/,进入下载页面如下。
在这里插入图片描述
在 Windows 上下载好上面 qt-everywhere-src-5.12.9.tar.xz 源码拷贝到 Ubuntu 虚拟机下,
在这里插入图片描述
解压下载好的 qt-everywhere-src-5.12.9.tar.xz 源码压缩包。解压时间较长,请耐心等待。

tar -vxf qt-everywhere-src-5.12.9.tar.xz

好家伙,提示我磁盘满了(内存不太够,只分配了40G)
在这里插入图片描述
没办法,只能删掉点东西了。
删掉了大概5.5G东西(都打包移到windows上了)(笑死,最后编译发现内存又不够了,我又赶紧删了2G的东西,总算编译过去了)
解压时间9:00-09:03 中间出去了一下,可能更短

在这里插入图片描述
解压之后5.5G直接变2.8G了
在这里插入图片描述
在当前目录出现 qt-everywhere-src-5.12.9 目录夹,此文件夹就是我们解压后的目录。进入此目录。

cd qt-everywhere-src-5.12.9/

在这里插入图片描述

2. 修改qmake.conf

编辑 mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf,配置相关编译器及路径。由于用户经常复制文档错误,指的是格式或者手敲错误。所以编者将这些配置上传到 gitee 上,提供给用户下载。
路径如下。
https://gitee.com/QQ1252699831/qt5.12.9-conf.git。可以直接在 gitee 上下载这个 qmake.conf。

git clone https://gitee.com/QQ1252699831/qt5.12.9-conf.git

在这里插入图片描述
下载的文件是
在这里插入图片描述
用下载的qmake.conf替换掉原来的qmake.conf

cp qt5.12.9-conf/qmake.conf qtbase/mkspecs/linux-arm-gnueabi-g++/

在这里插入图片描述
打开查看一下:

vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf 

在这里插入图片描述
如果是这样的,就OK了。

3. 配置编译选项

查看编译选项,输入./configure -help 指令,查看可配置选项。

./configure -help

在这里插入图片描述
由于配置较长,按需要编译,编者总结了配置项,写了一个脚本。

就是之前下载的那个文件下的 autoconfigure.sh。下载之后修改里面的路径,改为自己的即可!需要修改3处个人路径:

(1) /home/luatao/linux/tool/qt-everywhere-src-5.12.9/arm-qt 为编译输出路径。
(2) /home/luatao/linux/tool/tslib/include 为之前编译的 tslib 头文件路径。
(3) /home/luatao/linux/tool/tslib/lib 为之前编译的 tslib 相关库文件路径。

打开文件,编译

vi qt5.12.9-conf/autoconfigure.sh 

在这里插入图片描述
在这里插入图片描述
赋予脚本可执行权限。

chmod +x qt5.12.9-conf/autoconfigure.sh
sudo apt-get install g++ // 配置前请先安装 g++

直接执行 autoconfigure.sh。配置需要一段时间,请耐心等待!

./qt5.12.9-conf/autoconfigure.sh

配置时间:09:35-09:38

在这里插入图片描述
配置完成如下。若未见此信息,请检查个人配置。切记是使用Ubuntu16,如果是 Ubuntu18 以上,可能出现 C++11 Error,这是我们正点原子忠实用户粉丝反馈的,粉丝解决方法是出现这种错误后,重新解压一次 Qt 源码,重新配置就不会出现 c++11 Error,特此说明。
上面是正点原子的文档说的,但是我是18.04的版本,一次就配置成功了。
在这里插入图片描述

4. 开始编译Qt5.12.9

直接执行 make 开始编译。
编译时间:09:40-11:20 我擦(等急死了) 好在最后编译成功了。

编译时长由个人计算机速度及分配给虚拟机核心数决定
如按上面操作,遇到编译 Qt 源码出现错误,请重新配置!有可能是个人计算机分配给虚拟机内存太低所导致的,既然 Qt 源码能发布,除了配置错误,几乎不可能有编译错误的!经过编者经验和用户反馈,用户编译的时候会出现类似 sub-xx-make-first-ordered 错误。这个原因可能是虚拟机分配的配置太低及用户目录权限的问题。您可以看见编者都是用普通用户在编译的,尽量不要使用 root 用户和 sudo 权限来编译!除非您比较懂。编译完成如下图。
在这里插入图片描述
执行安装指令后,查看安装后的内容。

make install

两三分钟就安装好了

ls arm-qt

在这里插入图片描述

三、移植Qt到文件系统

上面我们终于编译好了 tslib 和 Qt 源码。我们需要移植这些库都开发板系统上才能运行 Qt应用程序!这里特别说明一下。因为正点原子的出厂系统自带 Qt 库和 tslib,是不需要额外移植了。不能将自己编译的 Qt 库移植到出厂系统下!因为如果您不了解出厂系统的环境,就会导致移植的 Qt 库与出厂的 Qt 冲突!导致报错!所以我们需要移植到一个没有 Qt 库的文件系统里。可以直接移植到自己编译的文件系统里。

1. 烧写文件系统

将rootfs.tar.bz2文件系统烧写到开发板上。

特别注意,经过用户反馈,有些用户为了图省事,通过 NFS 挂载文件系统的方式来运行Qt程序。此方法运行Qt程序可能导致网络中断!因为Qt运行会耗一定的性能,而挂载文件系统也会消耗掉一定的性能。所以可能会出现网络中断,串口终端没反应,Qt 程序运行缓慢等情况。所以建议读者烧写系统到板子在的存储或者 TF 卡上。这样更能真实反映 Qt运行的性能!然后烧写文件系统到 eMMC 核心板或者 NandFlash 核心板。

关于系统烧录请看:烧录

2. 移植tslib到文件系统

因为我们之前已经把这一部分放到了文件系统中了,所以我们不需要操作下面的步骤了。这里可以直接测试看看触摸是否可用。

1. 测试tslib

直接输入ts_test // 运行 ts_test 测试触摸是否正常,点击界面的 Draw 测试

触摸屏上点击 Draw 测试能够画出线条,且位置准确,说明 tslib 配置正常。按 Ctrl + c 结束 ts_test 指令。下图为 7 寸 800x480 分辨率的电容屏,使用 tslib 测试效果
在这里插入图片描述

3. 移植Qt到文件系统

使用下面的指令打包编译安装好的 arm-qt 文件夹打包成 tar.bz2 格式,打包以防止文件丢失。

tar -jcf ./arm-qt.tar.bz2 arm-qt

然后使用U盘拷贝arm-qt.tar.bz2,在USB接口插上U盘(参考上一小节的方法挂载U盘),手动挂载后,在开发板根文件系统上解压到/usr/lib/目录下。如下图,编者已经解压到/usr/lib 目录下。

tar xf arm-qt.tar.bz2 -C /usr/lib

在这里插入图片描述

4. 配置 Qt5 的环境变量

编辑/etc/profile,在末尾添加以下内容。如下图红色框内。注意要改为个人实际的路径。要想 Qt 程序显示中文,请自行将 windows 下的(路径 C:\Windows\Fonts)下的中文字库放到新建一个/usr/share/fonts/目录下就可以了。若例程有使用到字符,会显示找到不字库。注意 Windwos 的字库仅为个人学习使用,不要用于商业用途!有版权的!

export QT_ROOT=/usr/lib/arm-qt
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1
export QT_QPA_FONTDIR=/usr/share/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

在这里插入图片描述

5. 测试 Qt 运行

使能 Qt 的配置在/etc/profile 的环境变量,下次开机不用使能,开机会自动使能这个环境变量。

source /etc/profile
/usr/lib/arm-qt/examples/widgets/animation/animatedtiles/animatedtiles //运行编译的示例

在这里插入图片描述
7 寸屏 800x480 显示效果如下(拍照效果略差,实际效果很好),同时点击图中的项,点击什么样的图标就显示什么样的图案。确认触摸正常。Qt 官方例子也十分流畅!开启程序需要提前插鼠标!移植的 Qt 不支持热插拨鼠标(出厂系统支持热插拨),Qt 官方说明需要 libudev 情况下 Qt 才能支持热插拔,请自行解决。

在这里插入图片描述
在这里插入图片描述

四、搭建ARM平台的Qt Creator环境

万里长征,终于到搭建 ARM 平台的 Qt Creator 环境这一步了!我们上面只是移植好了 Qt到开发板上。我们还需要编写 Qt 应用程序啊,最后交叉编译 Qt 应用程序才能算完整!本章将介绍 Qt Creator 的安装和交叉编译 ARM 平台的 Qt 环境搭建。

1. 安装Qt Creator

我们想要在 Ubuntu 平台开发 Qt,那么必须要有相应的 IDE 环境,那么 Qt Creator 就是 Qt的 IDE(集成环境),我们就可以使用 Qt Creator 快速编程了。进入网址 http://download.qt.io/archive/qt/5.12/5.12.9/下载 Qt 5.12.9。Qt 官方已经把 Qt Creator 封装在下面这个 qt-opensource-linux-x64-5.12.9.run。我们需要下载这个 qt-opensource-linux-x64-5.12.9.run 直接在 Ubuntu 安装即可。
在这里插入图片描述
用指令下载,编者复制上面的下载地址,直接在 Ubuntu 终端使用 wget 指令下载。如下。

wget http://download.qt.io/archive/qt/5.12/5.12.9/qt-opensource-linux-x64-5.12.9.run

在这里插入图片描述
下载完成得到 qt-opensource-linux-x64-5.12.9.run 这个文件。
在这里插入图片描述
赋予该文件可执行权限,再执行安装。

chmod u+x qt-opensource-linux-x64-5.12.9.run
sudo ./qt-opensource-linux-x64-5.12.9.run // 建议加 sudo,否则安装在当前目录下。

如无意外,则弹出 Qt 5.12.9 欢迎安装界面。
在这里插入图片描述
这里需要填写 Qt 帐号,去 Qt 官网 https://www.qt.io/注册一个账号。填写后再点击 Next。
在这里插入图片描述
同意使用条款。按如下步骤操作。
在这里插入图片描述
欢迎安装界面,直接点击下一步
在这里插入图片描述
选择安装目录,建议默认即可。会安装在/opt 目录下。点击下一步。
在这里插入图片描述
按需要安装,除了安卓选项我们都选择安装。点击下一步。
在这里插入图片描述
同意许可协议,点击下一步。
在这里插入图片描述
准备安装,点击安装

内存不够出现下面的情况
在这里插入图片描述
删除一些东西之后
在这里插入图片描述
等待安装
在这里插入图片描述
安装完成,点击完成
在这里插入图片描述
还剩1.8G,啊,我好难
在这里插入图片描述

2. 配置ARM平台的Qt Creator Kits

直接搜索Qt Creator”图标后再单击打开
在这里插入图片描述
打开 Qt Creator 界面,找到 Tools(工具)》Options(选项)。
在这里插入图片描述
配置 qmake
按下图步骤,找到我们编译出来的 ARM 平台的 Qt 库安装文件夹 arm-qt 下的 qmake。
在这里插入图片描述
配置 C++编译器
在这里插入图片描述
我们在前面安装的 C++编译器为 arm-linux-gnueabihf-g++。按如下步骤配置,选择 Compiler path 的路径为我们安装的交叉编译器路径/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++。
在这里插入图片描述
配置 Kits

按如下图步骤操作,在 Name 处改名为 Arm-Qt5.12.9。选择我们配置好的 Compiler 和 QtVersion 即可。
在这里插入图片描述

3. 验证ARM平台的Qt编译

注意,这里只能编译(构建),不能点击运行,这里是编译出 ARM 平台的 Qt 应用程序,所以是不能在 Ubuntu 这样的 X86 平台上跑的。
在这里插入图片描述
选择 Application 项目和 Qt Widgets Application 模板。
在这里插入图片描述
项目命名为 test,选择工程的位置,这里位置不要随便选择,建议放在家目录下(/home/用户名)。
在这里插入图片描述
默认使用 qmake,点击下一步。
在这里插入图片描述
选择类模板,默认 QMainWindow 类即可
在这里插入图片描述
选择文件翻译,默认无,点击下一步
在这里插入图片描述
选择套件,这里可以两个套件一起选,编译时切换选择 ARM 平台的套件,如下。
在这里插入图片描述
默认,点击 Finish,完成。
在这里插入图片描述
选择 ARM 平台所用的 Kits。选择 Debug 构建。
在这里插入图片描述
按如下步骤点击 Build(构建),不要点击运行!也不要点击左下角的绿色三角符号。
在这里插入图片描述

编译完成如下图,编译输出窗口。
在这里插入图片描述
我们可以在工程目录所在的同一级目录下,找到 build-test-Arm_Qt5_12_9-Debug/文件夹,找到编译可执行文件,拷贝 test 文件到开发板文件系统下上执行即可!执行命令为./test。
在这里插入图片描述
在这里插入图片描述
报错是因为没有安装中文字库。

4. 命令行编译Qt工程

前提已经安装了交叉编译器,然后我们可以直接在 test 工程文件夹里,直接运行 qmake,生成 Makefile,再执行 make 开始编译。

cd test  // 进入 test 工程文件夹下
/home/luatao/linux/tool/qt-everywhere-src-5.12.9/arm-qt/bin/qmake // qmake 的绝对路径,需要改为自己的
make -j 4

在这里插入图片描述
编译完成如下图,会在当前文件夹生成 test 文件,拷贝到开发板文件系统下直接使用./test。

至此,已经完成关于 Qt5.12.9 的移植及 Qt Creator 环境搭建。

  • 6
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值