少于 1 分钟阅读 次阅读

本文指导交叉编译的 Qt 用于编译 ARM64 平台的测试程序。

关键目录说明

| 目录类型 | 路径 | |———-|——| | 主机工具 | /home/hw/hdd/rk3568_qt_5129/qt-everywhere-src-5.12.9/host/bin | | 目标库 | /home/hw/hdd/rk3568_qt_5129/qt-everywhere-src-5.12.9/ext | | 根文件系统 | /home/hw/hdd/rk3568_qt_5129/sysroot |

步骤 1:设置 Qt 编译环境

在终端配置环境变量(在编译测试程序前执行):

export QT_HOST_PREFIX=/home/hw/hdd/rk3568_qt_5129/qt-everywhere-src-5.12.9/host     # 指定host目录
export QT_TARGET_PREFIX=/home/hw/hdd/rk3568_qt_5129/qt-everywhere-src-5.12.9/ext    # 指定ext目录
export PATH=$QT_HOST_PREFIX/bin:$PATH                                               # 指定交叉编译工具目录
export SYSROOT=/home/hw/hdd/rk3568_qt_5129/sysroot                                  # 指定arm64平台根文件系统目录
export CROSS_COMPILE=/usr/bin/aarch64-linux-gnu-                                    # 指定要使用的交叉编译链

步骤 2:创建测试程序

新建测试目录并创建测试文件:

mkdir qt_test && cd qt_test
touch main.cpp

main.cpp 内容示例

#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    QLabel label("Qt on RK3568 works!");
    label.setAlignment(Qt::AlignCenter);
    label.resize(400, 300);
    label.show();
    return app.exec();
}

步骤 3:编写项目文件

创建 .pro 项目文件:

touch test_app.pro

test_app.pro 内容

QT += widgets
TARGET = test_app
SOURCES += main.cpp

# 目标设备链接器设置
target.path = /usr/bin
INSTALLS += target

步骤 4:交叉编译测试程序

# 使用交叉编译的 qmake
qmake

# 使用交叉编译工具链构建
make -j$(nproc)

步骤 5:部署到 RK3568

将生成的可执行文件和依赖库复制到开发板:

  1. 复制可执行文件: 复制test_app到arm板上

  2. 移植 Qt 依赖库: 主要是移植QT_TARGET_PREFIX这个目录到ARM板上,具体参考《Qt5.12.9库(交叉编译)移植指南》

留下评论