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

您所在的位置:网站首页 linux应用软件开发 【Linux】Linux开发板搭载Ubuntu18.04移植Qt5并设置Qt应用开机自启动

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

2023-03-14 23:17| 来源: 网络整理| 查看: 265

【Linux】Linux开发板搭载Ubuntu18.04移植Qt5并设置Qt应用开机自启动 前言一、实验环境二、配置交叉编译器三、交叉编译tslib四、交叉编译Qt5五、配置Qt Creator六、Qt5添加字库七、移植Qt5和tslib八、开机自启动Qt应用九、实验结果

前言

把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/[email protected] #添加如下: ExecStart=-/sbin/agetty -a root --keep-baud 115200,38400,9600 %I $TERM

在这里插入图片描述

关闭虚拟终端服务,

systemctl disable [email protected]

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

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。 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3