【嵌入式Linux开发】移植Qt到ARM平台及搭建Qt5.14.1交叉编译环境

一、下载准备

1.qt5.14.1源码和linux安装包下载:https://download.qt.io/
通过命令解压到当前文件夹:

sudo tar xvf qt-everywhere-src-5.14.1.tar.xz

2.交叉编译工具链下载:https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/
在这里插入图片描述
下载完成之后,解压,压缩包里的 bin 目录下,就有我们需要的交叉编译器,直接使用即可。

交叉编译是编译技术发展过程中的一个重要分支。通俗的说,交叉编译就是在一个平台上生成另一个平台上的可执行代码。这里提到的平台有两方面的含义:处理器的体系结构和所运行的操作系统。

通常,程序是在一台计算机上编译,然后再分布到将要使用的其它计算机上。当主机系统(运行编译器的系统)和目标系统(产生的程序将在其上运行的系统)不兼容时,该过程就叫做交叉编译。嵌入式系统应用的日益广泛和需求推动了交叉编译技术的发展。嵌入式系统开发,一般都是基于X86的PC平台进行,如果开发非X86的嵌入式系统,由于嵌入式系统资源的匮乏,交叉编译几乎是唯一手段。嵌入式系统中的应用程序都是通过交叉编译得到的。

二、交叉编译环境配置

(1)交叉编译环境配置
添加环境变量:

sudo gedit  /etc/profile

我的路径:
export PATH=$PATH:/home/wht/QtBuild/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin

更新环境变量

source /etc/profile

(2)Qt编译环境配置
进入Qt源码架构信息路径,修改交叉编译架构用到的信息:

gedit ./qtbase/mkspecs/linux-aarch64-gnu-g++/qmake.config

修改路径;

#
# qmake configuration for building with aarch64-linux-gnu-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

# modifications to g++.conf
QMAKE_CC                = /home/wht/QtBuild/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
QMAKE_CXX               = /home/wht/QtBuild/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++
QMAKE_LINK              = /home/wht/QtBuild/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++
QMAKE_LINK_SHLIB        = /home/wht/QtBuild/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++

# modifications to linux.conf
QMAKE_AR                = /home/wht/QtBuild/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-ar cqs
QMAKE_OBJCOPY           = /home/wht/QtBuild/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-objcopy
QMAKE_NM                = /home/wht/QtBuild/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-nm -P
QMAKE_STRIP             = /home/wht/QtBuild/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-strip
load(qt_config)

(3)配置编译选项
输入./configure -help 指令,查看可配置选项,由于配置选项太长,我另写了一个脚本来执行配置选项,名为autoconfigure.sh,配置主要指定编译输出路径和功能选择:

#!/bin/bash
./configure -prefix /home/wht/qt5.14.1-arm \
-opensource \
-confirm-license \
-release \
-strip \
-shared \
-xplatform linux-aarch64-gnu-g++ \
-optimized-qmake \
-c++std c++11 \
--rpath=no \
-pch \
-skip qt3d \
-skip qtactiveqt \
-skip qtandroidextras \
-skip qtcanvas3d \
-skip qtconnectivity \
-skip qtdatavis3d \
-skip qtdoc \
-skip qtgamepad \
-skip qtlocation \
-skip qtmacextras \
-skip qtnetworkauth \
-skip qtpurchasing \
-skip qtremoteobjects \
-skip qtscript \
-skip qtscxml \
-skip qtsensors \
-skip qtspeech \
-skip qtsvg \
-skip qttools \
-skip qttranslations \
-skip qtwayland \
-skip qtwebengine \
-skip qtwebview \
-skip qtwinextras \
-skip qtx11extras \
-skip qtxmlpatterns \
-make libs \
-make examples \
-nomake tools -nomake tests \
-gui \
-widgets \
-dbus-runtime \
--glib=no \
--iconv=no \
--pcre=qt \
--zlib=qt \
-no-openssl \
--freetype=qt \
--harfbuzz=qt \
-no-opengl \
-linuxfb \
--xcb=no \
--libpng=qt \
--libjpeg=qt \
--sqlite=qt \
-plugin-sql-sqlite \
-I/home/tslib/include \
-L/home/tslib/lib \
-recheck-all

给执行权限,执行脚本进行配置

chmod +x ./autoconfig.sh

./autoconfigure.sh

三、编译Qt库及移植

(1)编译
编译时间大概2-3小时

sudo make
sudo make install

(2)移植Qt到文件系统
将编译出的Qt库文件夹打包拷贝到根文件系统的路径下解压,并配置环境变量,配置如下:

export PATH PS1 OPIEDIR QPEDIR QTDIR EDITOR TERM
export TS_ROOT=/opt/tslib    
export LD_LIBRARY_PATH=$TS_ROOT/lib:$LD_LIBRARY_PATH
export PATH=$TS_ROOT/bin:$PATH
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=$TS_ROOT/etc/pointercal
export TSLIB_CONFFILE=$TS_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TS_ROOT/lib/ts
# qt
export QT_ROOT=/opt/qt5.14.1-arm    
export LD_LIBRARY_PATH=$QT_ROOT/lib/:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts
export QT_QPA_GENERIC_PLUGINS=tslib
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0:inverty
export QT_QPA_FB_TSLIB=1

四、搭建 Qt Creator 交叉编译环境

安装完成后, 配置Qt Creator Kits。打开Qt,点击工具->选项

配置 qmake,qmake在上面编译Qt源码后生成的qt5.14.1-arm里面
在这里插入图片描述
配置 C++编译器,使用下载的交叉编译工具链
在这里插入图片描述
配置 Kits,选择刚才的Qt versions和C++编译器。
在这里插入图片描述
构建ARM平台上的Qt执行程序,就选上刚才新添加的Kit,然后点击构建,就会生成一个 build-test-ARM_Qt_5_12_9-Debug 的文件,里面就存放着Qt可执行程序,把这个可执行程序发送到ARM平台(开发板),然后直接运行就可以了。

五、获得Qt可执行文件的另一种方法

除了上面说的在Qt Creator 中构建出可以在ARM平台上运行的Qt程序之外,还有另一种方法也可以得到可以在ARM平台上运行的Qt程序。

进入项目的文件夹,直接运行qmake,生成 Makefile,再执行 make 开始编译。

cd test
/home/wht/home/qt5.14.1-arm/bin/qmake
make

查看ARM版本可执行程序的详细信息:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值