2. Qt Creator远程部署与调试配置

任务目标

在嵌入式Linux开发板上运行第一个Qt Widgets程序,界面中央显示文本“Hello Embedded Linux”。本案例覆盖从PC端编写源码、交叉编译到开发板部署运行的完整最小闭环。

环境与依赖

  • PC端:Ubuntu 20.04/22.04 x86_64,已安装交叉编译工具链(如arm-linux-gnueabihf-g++)
  • Qt源码:与开发板匹配的Qt 5.15.2交叉编译版本,安装于 /opt/qt-5.15.2-arm
  • 开发板:ARM Cortex-A7/A9核心板,运行Linux内核,具备Qt运行所需库(libQt5Widgets.so.5等)
  • 传输方式:NFS挂载或scp拷贝可执行文件到开发板

关键完整代码

创建文件 main.cpp,代码如下:

#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QLabel label("Hello Embedded Linux");
    label.setAlignment(Qt::AlignCenter);
    label.resize(400, 240);
    label.show();

    return app.exec();
}

编译与部署

创建 hello.pro 工程文件:

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

在PC端执行交叉编译(假设Qt安装路径为 /opt/qt-5.15.2-arm):

/opt/qt-5.15.2-arm/bin/qmake hello.pro
make

编译完成后将生成的 hello 可执行文件拷贝到开发板(以NFS挂载为例):

cp hello /nfs/rootfs/home/
# 开发板上执行:
export LD_LIBRARY_PATH=/usr/lib/qt5/lib:$LD_LIBRARY_PATH
/home/hello -platform linuxfb

验证方法与通过条件

  • 开发板屏幕出现400×240像素窗口,窗口中央显示白色文本“Hello Embedded Linux”
  • 窗口背景为默认灰色,文本清晰无乱码,窗口可正常关闭(Ctrl+C终止进程)
  • 若屏幕无显示,执行 echo $DISPLAY 确认无X服务,使用 -platform linuxfb 指定帧缓冲平台即可
  • 若提示缺少Qt库,检查 LD_LIBRARY_PATH 是否指向开发板上Qt库实际安装目录

常见问题

  • qmake版本错误:确认使用的是交叉编译版qmake(/opt/qt-5.15.2-arm/bin/qmake -v),而非PC版
  • 字体不显示:开发板需包含中文字体文件(如 wqy-microhei.ttc),本案例仅显示英文,若需中文需将字体文件拷贝至 /usr/share/fonts/ 并执行 fc-cache
  • 触摸无响应:本案例未启用触摸事件处理,仅验证显示功能,触摸输入需另行配置 tslib 环境变量