使用QtCreator进行Embedded Linux图形界面开发,需要先完成开发环境的各项基础配置,确保编译出的程序能够在目标嵌入式设备上正常运行。这些配置主要包括交叉编译工具链准备、Qt库移植、QtCreator构建套件设置三个核心环节。

前期准备
在开始配置前,需要提前准备好以下资源:
- 目标Embedded Linux设备的交叉编译工具链,通常由芯片厂商提供,包含gcc、g++等编译工具
- 适配目标设备的Qt源码,建议选择和QtCreator版本匹配的Qt版本,避免兼容性问题
- 已经安装好QtCreator的开发主机,系统可以是Ubuntu、Windows等主流系统
- 目标Embedded Linux设备的系统镜像,确保设备能够正常启动运行
交叉编译工具链配置
交叉编译工具链是编译嵌入式程序的基础,需要先将其添加到系统环境变量中,方便后续编译过程调用。
Ubuntu系统下配置示例
假设交叉编译工具链解压到了/opt/arm-linux-gnueabihf目录,执行以下命令添加环境变量:
# 临时添加环境变量,重启终端后失效 export PATH=$PATH:/opt/arm-linux-gnueabihf/bin # 永久添加环境变量,编辑~/.bashrc文件 echo "export PATH=$PATH:/opt/arm-linux-gnueabihf/bin" >> ~/.bashrc source ~/.bashrc # 验证工具链是否配置成功 arm-linux-gnueabihf-gcc -v
如果命令执行后输出了gcc的版本信息,说明交叉编译工具链配置成功。
编译嵌入式Qt库
需要针对目标Embedded Linux设备编译Qt库,确保Qt库能够适配设备的硬件和系统环境。
编译步骤
解压下载的Qt源码,进入源码目录后执行配置命令:
# 进入Qt源码目录 cd qt-everywhere-src-5.15.2 # 配置编译参数,指定交叉编译工具链和目标平台 ./configure -prefix /opt/qt5.15.2-arm -opensource -confirm-license -xplatform linux-arm-gnueabihf-g++ -no-opengl -no-xcb -no-pch -make libs -nomake examples -nomake tests # 开始编译,-j参数指定并行编译的线程数,根据主机性能调整 make -j4 # 安装编译好的Qt库到指定目录 make install
编译完成后,/opt/qt5.15.2-arm目录下会生成适配嵌入式设备的Qt库文件。
QtCreator构建套件配置
打开QtCreator,依次点击菜单栏的工具 - 选项,进入选项配置页面,完成构建套件的各项设置。
配置编译器
在选项页面左侧选择Kits - 编译器,点击添加 - GCC - C,配置C编译器:
- 名称:ARM GCC C
- 路径:/opt/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
再点击添加 - GCC - C++,配置C++编译器:
- 名称:ARM GCC C++
- 路径:/opt/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++
配置Qt版本
在选项页面左侧选择Kits - Qt Versions,点击添加,选择之前编译好的Qt库中的qmake文件,路径为/opt/qt5.15.2-arm/bin/qmake,添加完成后会自动识别Qt版本信息。
配置构建套件
在选项页面左侧选择Kits - 构建套件(Kit),点击添加,设置以下参数:
- 名称:Embedded Linux ARM Kit
- 设备类型:通用Linux设备
- 编译器:C选择ARM GCC C,C++选择ARM GCC C++
- Qt版本:选择之前添加的嵌入式Qt版本
- 调试器:如果没有适配的嵌入式调试器,可以暂时不选择
配置完成后点击应用 - 确定保存设置。
测试配置是否生效
新建一个Qt Widgets Application项目,在项目构建套件选择页面,勾选刚刚创建的Embedded Linux ARM Kit套件。进入项目后,拖拽一个QPushButton到界面上,设置按钮文本为“测试按钮”,然后点击构建按钮。
如果构建过程没有报错,会生成适配嵌入式设备的可执行文件,将该文件拷贝到目标Embedded Linux设备上,赋予执行权限后运行,能够看到图形界面窗口则说明配置完全成功。
// 嵌入式设备端运行程序的简单示例
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 设置按钮点击后的提示信息
connect(ui->pushButton, &QPushButton::clicked, this, [=](){
ui->pushButton->setText("点击成功");
});
}
MainWindow::~MainWindow()
{
delete ui;
}
QtCreatorEmbedded_Linux图形界面开发交叉编译修改时间:2026-06-29 20:27:34