【Linux】Linux开发板搭载Ubuntu18.04移植Qt5并设置Qt应用开机自启动

2 篇文章 0 订阅
2 篇文章 0 订阅

前言

把Ubuntu14.04虚拟机交叉编译的Qt5,移植到搭载Ubuntu18.04的Linux开发板,然后通过一系列的配置让开发板能够开机就启动Qt应用程序。

一、实验环境

宿主机:Ubuntu14.04 x86_64
目标机:Ubuntu18.04 aarch64
Qt5源码:qtbase 5.12.10
交叉编译器:gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu

二、配置交叉编译器

GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言编译器。GNU编译器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc++,libgcj等)。
在宿主机下执行如下步骤:
下载,

wget https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/aarch64-linux-gnu/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz

解压,

xz -dv gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz
tar xvf gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar

添加环境变量,

vim ~/.bashrc
#添加如下:
export PATH=/home/root/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin:$PATH

source ~/.bashrc

若通过如下命令能够查看到版本信息,如下图所示,则证明配置完成。

aarch64-linux-gnu-gcc -v

在这里插入图片描述

三、交叉编译tslib

tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能。
在宿主机下执行如下步骤:
下载,

wget https://gitlab.com/tslib/tslib/-/archive/1.22/tslib-1.22.tar.gz

解压,

tar zxvf tslib-1.22.tar.gz

进入tslib目录,

cd tslib-1.22

生成配置文件,

./auto autogen.sh

配置,

CC=aarch64-linux-gnu-gcc \
CXX=aarch64-linux-gnu-g++ \
./configure \
--host=arm-linux-gnu \
--prefix=/opt/tslib

编译安装,

make && make install

若过程没有出现错误,则安装完成。

四、交叉编译Qt5

qtbase是Qt的基础模块,包含了core、widgets、sql和network等模块,只安装它也足够开发常用的Qt应用。
在宿主机下执行如下步骤:
下载,

wget https://download.qt.io/archive/qt/5.12/5.12.10/submodules/qtbase-everywhere-src-5.12.10.tar.xz

解压,

xz -dv qtbase-everywhere-src-5.12.10.tar.xz
tar xvf qtbase-everywhere-src-5.12.10.tar

进入qtbase目录,创建并进入build文件夹,创建自动配置脚本autoconfig.sh,

cd qtbase-everywhere-src-5.12.10
mkdir build
cd build
vim autoconfig.sh

autoconfig.sh编辑如下,

../configure \
-prefix /opt/qt-5.12.10-aarch64 \
-xplatform linux-aarch64-gnu-g++ \
-opensource \
-confirm-license \
-release \
-strip \
-shared \
-c++std c++11 \
-no-opengl \
-no-openssl \
-nomake examples \
-nomake tests \
-tslib \
-I"/opt/tslib/include" \
-L"/opt/tslib/lib" \
-recheck-all

运行autoconfig.sh,

sh autoconfig.sh

结果如下图所示,
在这里插入图片描述

编译安装,

make -j2 && make install

若过程没有出现错误,则安装完成。

五、配置Qt Creator

Qt Creator是一款跨平台的、轻量级的Qt集成开发环境(IDE),使用它能够方便快速地完成Qt应用的开发。
在宿主机下执行如下步骤:
安装qtcreator,

apt install qtcreator

运行qtcreator,

qtcreator

进入qtcreator的设置界面,
在这里插入图片描述

添加编译器,
在这里插入图片描述

添加Qt Version,
在这里插入图片描述

添加Kit,点击Add添加,自定义Name,Device Type选择Generic Linux Device(通用Linux设备),选择对应的Compiler和Qt version,点击Apply生效,点击OK关闭。
在这里插入图片描述

配置完成,可以使用qtcreator编译生成aarch64架构的Qt应用。
打开Qt工程,添加编译工具,
在这里插入图片描述

最后,点击build,编译工程即可。
在对应目录下生成了Qt应用文件,通过file命令可看到其属于aarch64架构的。
在这里插入图片描述

六、Qt5添加字库

上述步骤交叉编译的Qt5不带字库,若Qt程序需要显示文字,就需要指定字库,以下为添加中文字库为例,
在/opt/qt-5.12.10-aarch64/lib目录下新建fonts文件夹,
把Windows电脑下的字库复制到/opt/qt-5.12.10-aarch64/lib/fonts即可。
在这里插入图片描述

七、移植Qt5和tslib

把上述步骤交叉编译的Qt5、tslib和Qt应用复制到目标机。
由于交叉编译时指定的目录是/opt,所以只要把宿主机上的Qt5和tslib复制到目标机的/opt目录下即可,
然后目标机配置环境变量如下所示,

vim ~/.bashrc
#添加如下:
export PATH=$PATH:/opt/tslib/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/tslib/lib
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event2

source ~/.bashrc

其作用是指定显示为/dev/fb0外设,触摸为/dev/input/eventX外设。
运行Qt应用,有结果如下图所示,
在这里插入图片描述

到此,Qt5已经成功移植到目标机了。

八、开机自启动Qt应用

目标机通过串口在宿主机上显示终端,默认是需要密码登陆的,想让Qt应用开机后启动,需要设置成免密登陆。
在目标机下执行如下步骤:
设置串口终端免密登陆,如下图所示,

vim /lib/systemd/system/serial-getty@.service
#添加如下:
ExecStart=-/sbin/agetty -a root --keep-baud 115200,38400,9600 %I $TERM

在这里插入图片描述

关闭虚拟终端服务,

systemctl disable getty@.service

然后查看是否关闭,有结果如下图所示,

systemctl list-unit-files | grep tty

在这里插入图片描述

编辑自动启动脚本,在/etc/profile.d目录下新建脚本,开机后会自动运行该脚本,

cd /etc/profile.d
vim runqtapp.sh

脚本编辑如下,

#!/bin/sh
export PATH=$PATH:/opt/tslib/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/tslib/lib
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event2
cd /root
./animatedtiles

然后重启,就会发现Qt程序自动运行了。

九、实验结果

在制作GIF的过程中,我去除了大部分的视频,但是我保留了一部分,我觉得保留了一部分视频,才知道你看的是GIF。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值