跳转至

QT 环境搭建

QT 运行环境测试

Ubuntu 20.04

Ubuntu 20.04 系统默认配置 QT 5.12.8 运行环境。

1. 查看 QT 库

$ ls -l /usr/lib/aarch64-linux-gnu/libQt*

2. 将 demo 拷贝至系统任意目录下,进行测试:

$ sudo chmod +x ./mainwindow
$ sudo ./mainwindow

Debian 11

Debian 11 系统默认配置 QT 5.15.2 运行环境。

1. 查看 QT 库

$ ls -l /usr/lib/aarch64-none-linux-gnu/libQt*

2. 将 demo 拷贝至系统任意目录下,进行测试:

$ sudo chmod +x ./mainwindow
$ sudo ./mainwindow

QT 交叉编译环境搭建

测试平台:虚拟机 Ubuntu 20.04

gcc 交叉编译工具

  • SDK 自带交叉编译工具链

编译工具链路径(不推荐,会出现版本不兼容):

(SDK)/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/
  • gcc 交叉编译链安装

从网盘中获取 gcc 交叉编译链,将获取的压缩包放到虚拟机目录下进行解压,-C /opt/gcc-arm 为指定解压路径

$ sudo tar -xvf gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz -C /opt/gcc-arm
  • 环境变量配置

1. 若需系统正确识别交叉编译工具链,将其安装路径配置到环境变量中。

临时生效(仅当前终端会话有效):

$ export PATH=/opt/gcc-arm/bin:$PATH

永久生效:

$ sudo vim /etc/profile
export PATH=/opt/gcc-arm/bin:$PATH
source /etc/profile

2. 验证安装

验证是否成功安装并配置工具链:

aarch64-none-linux-gnu-gcc --version

输出类似内容,则安装成功:

aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture) 9.2.1 20191203
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

qmake 安装

在 Qt 项目中,qmake 根据 .pro 工程文件生成 MakeFile。在开发板中安装 QT,gcc,无需修改编译工具,安装源码即可。

1. 通过网盘 下载 Qt / 通过访问官网 下载最新 Qt(历史版本 Qt 下载

官网下载示意图:

2. 安装所需的依赖库与工具链

$ sudo apt-get install build-essential perl python3 git
$ sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
$ sudo apt-get install flex bison gperf libicu-dev libxslt-dev ruby
$ sudo apt-get install libxcursor-dev libxcomposite-dev libxdamage-dev libxrandr-dev libxtst-dev libxss-dev libdbus-1-dev libevent-dev libfontconfig1-dev libcap-dev libpulse-dev libudev-dev libpci-dev libnss3-dev libasound2-dev libegl1-mesa-dev gperf bison nodejs
$ sudo apt-get install libasound2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev 
$ sudo apt-get install libgstreamer-plugins-bad1.0-dev
$ sudo apt install clang libclang-dev
$ sudo apt-get install xz-utils
$ sudo ln -s /usr/bin/python3 /usr/bin/python

3. 将下载完成的 Qt 解压至 opt 文件夹中

$ sudo tar -xvf qt-everywhere-src-5.12.2.tar.xz -C /opt/

进入解压文件夹,建立 auto.sh 脚本文件

$ sudo vim auto.sh
#!/bin/bash

./configure \
    -prefix /opt/Qt/ \
    -opensource -confirm-license \
    -nomake examples \
    -nomake tests \
    -release \
    -xplatform linux-aarch64-gnu-g++ \
    -device-option CROSS_COMPILE=/opt/gcc-arm/bin/aarch64-none-linux-gnu- \
    -no-eglfs \
    -no-xcb \
    -no-opengl \
    -skip qt3d \
    -skip qtcharts \
    -skip qtandroidextras \
    -skip qtlocation \
    -skip qtmultimedia \
    -skip qtsensors \
    -skip qtserialbus \
    -skip qtserialport \
    -skip qtwayland \
    -skip qtdeclarative \
    -skip qtxmlpatterns \
    -skip qtwebchannel \
    -skip qtwebengine \

4. 修改 qmake.conf 文件

Note

QT 源码中 qtbase/mkspecs/ 目录下存在不同平台,示例中采用 linux-aarch64-gnu-g++ 目录下 qmake 配置文件,但因交叉编译工具链不一致,需修改 qmake.conf 文件以适配当前使用的交叉编译工具。

# modifications to g++.conf
QMAKE_CC                =/opt/gcc-arm/bin/aarch64-none-linux-gnu-gcc
QMAKE_CXX               =/opt/gcc-arm/bin/aarch64-none-linux-gnu-g++
QMAKE_LINK              =/opt/gcc-arm/bin/aarch64-none-linux-gnu-g++
QMAKE_LINK_SHLIB        =/opt/gcc-arm/bin/aarch64-none-linux-gnu-g++

# modifications to linux.conf
QMAKE_AR                =/opt/gcc-arm/bin/aarch64-none-linux-gnu-ar cqs
QMAKE_OBJCOPY           =/opt/gcc-arm/bin/aarch64-none-linux-gnu-objcopy
QMAKE_NM                =/opt/gcc-arm/bin/aarch64-none-linux-gnu-nm -P
QMAKE_STRIP             =/opt/gcc-arm/bin/aarch64-none-linux-gnu-strip

5. 运行脚本交叉配置 QT 源码,执行 ./configure

$ sudo chmod 755 auto.sh
$ sudo ./auto.sh

Note

./configure
-prefix /opt/Qt/:Qt 安装路径
-opensource -confirm-license:安装 Qt 开源社区版
-nomake examples :禁止编译并安装 Qt 示例程序
-nomake tests:禁止编译并安装 Qt 测试用例与测试框架
-release:指定 Qt 以 Release 模式进行编译
-xplatform:指定 Qt 编译的目标运行平台
-qtlocation : 提供跨平台位置服务全套解决方案
-qtwebengine:基于 Chromium 内核的高性能网页渲染引擎
-skip:跳过指定 Qt 模块的编译
若项目无需位置服务或网页渲染功能,编译 Qt 时可通过 -skip 参数跳过 qtlocationqtwebengine 模块,大幅减少编译时间。

6. 执行编译,编译时长约 4~12 小时

$ sudo make -j4

编译完成执行命令将程序安装至 -prefix 指定的 /opt/Qt/ 中。

$ sudo make install

7. 成功安装后修改环境变量

$ sudo vim /etc/profile
export QTDIR=/opt/Qt
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
$ source /etc/profile

8. 查看版本

$ qmake -v

qtcreator 安装

Tip

安装 qtcreator 必须先安装 Qt,可通过不同方式进行 qtcreator 安装,根据自身情况选择对应方式。

安装包安装

Tip

在虚拟机中安装 qtcreator。

1. 进入 Qt 官网,选择安装包

image-20250219155414011

2. 在虚拟机中运行安装程序

Tip

需要在 Qt 官网注册账号,安装过程为图像化安装,安装过程和 Windows 保持一致。

chmod +x qt-opensource-linux-x64-5.12.2.run
./qt-opensource-linux-x64-5.12.2.run

apt 安装

Tip

在开发板中安装 qtcreator。

通过 apt 安装对应 qtcreator,可能和已安装 QT 版本不一致。

sudo apt update
sudo apt install qtcreator

源码安装

Tip

在虚拟机中安装 qtcreator。 特殊情况需要编译特定版本 Qtcreator(不推荐使用此安装方式),推荐使用与 Qt 框架版本相匹配的 Qt Creator 版本。

1. 下载 Qtcreator 源码

image-20241028094210629

2. 压缩包解压并进入解压路径,执行命令

$ qmake -r

3. 执行上文命令后生成 MakeFile 文件,执行命令进行编译

$ sudo make -j4

4. 编译完成,执行命令

$ sudo make install

5. bin 目录存在 qtcreatorqtcreator.sh,执行命令,qtcreator 在后台运行,根据需求配置 qtcreator

$ ./qtcreator.sh &

Kit 配置

1. GCC 中添加 C 编译器C++ 编译器

image-20250416112806987

2. 添加 qmake

image-20250416112845224

3. 配置完成

image-20250416112945015

Windows 交叉编译环境搭建

Windows 10/11 下交叉编译 aarch64 (ARMv8) 架构 Qt 5.12.10。

安装 QT

建议断网安装,否则需登录 Qt 账户。在 Qt 安装程序中按提示完成安装,选择对应组件。安装完成后在 Qt5.12.10\Tools\mingw730_64\bin 下复制 mingw32-make.exe 并重命名为 make.exe

配置环境变量

将以下路径添加到系统 PATH:

<Qt安装目录>\Qt5.12.10\Tools\mingw730_64\bin
<Qt安装目录>\Qt5.12.10\5.12.10\mingw73_64\bin

安装关联工具

安装 ActiveState Perl 5.36:

state checkout ActiveState-Projects/ActiveState-Perl-5.36.0 .
state use ActiveState-Perl-5.36.0

安装 Python(勾选 Add to PATH),验证:

python --version

交叉编译工具链

解压交叉编译工具链,文件夹重命名为 aarch64-linux-gnu,将其 bin 目录添加到系统 PATH。

编译 QT 源码

使用 MinGW 命令行工具(非 PowerShell)进入 Qt 源码目录:

.\configure.bat -release -opensource -prefix D:\Qt\CrossCompilation\Qt5.12.10-ARMv8 -nomake tests -nomake examples -no-opengl -skip qtvirtualkeyboard -platform win32-g++ -xplatform linux-aarch64-gnu-g++

接受开源协议,输入 y 完成配置。

# 编译(根据 CPU 核心数调整 -j 参数)
mingw32-make -j10

# 安装
mingw32-make install

配置 Qt Creator

菜单 工具 → 选项 → Kits

配置项 操作
Qt Version 添加交叉编译后的 qmake.exe
Compilers → C++ 添加 aarch64-linux-gnu-g++
Compilers → C 添加 aarch64-linux-gnu-gcc
Debuggers 添加 aarch64-linux-gnu-gdb.exe
CMake 添加 make.exe(重命名后的 mingw32-make)
Kits 新建 Kit,关联上述配置

测试

新建 Qt 工程,选择 ARM_Linux Kit 编译,将生成的二进制文件推送到板卡运行。