飞凌RK3568开发板Qt应用开发入门:从源码编译到‘Hello Qt’上板运行全记录
飞凌RK3568开发板Qt应用开发实战:从零构建到上板部署全流程
在嵌入式Linux开发领域,图形界面应用的需求日益增长。RK3568作为一款高性能处理器,搭配Qt框架能够为工业控制、智能终端等场景提供丰富的交互体验。本文将手把手带你完成从工具链配置到第一个Qt程序在开发板成功运行的全过程。
1. 开发环境准备与交叉编译器配置
1.1 基础开发环境搭建
工欲善其事,必先利其器。在开始Qt开发前,需要准备以下基础环境:
- 主机系统:推荐使用Ubuntu 18.04/20.04 LTS
- 磁盘空间:至少预留100GB可用空间
- 内存配置:建议8GB以上(全编译时16GB更佳)
安装必要的构建工具和依赖库:
sudo apt update sudo apt install -y build-essential git repo python3 libssl-dev \ libncurses5-dev bison flex gawk gcc-multilib g++-multilib \ device-tree-compiler u-boot-tools lzop1.2 获取交叉编译工具链
针对RK3568的ARM Cortex-A55架构,我们需要aarch64架构的交叉编译器。有两种获取方式:
方法一:独立工具链(适合纯C/C++开发)
wget https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz export PATH=$PWD/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin:$PATH方法二:全源码编译(推荐Qt开发)
# 从飞凌官方获取源码包 cat OK3568-linux-source.tar.bz2.* > OK3568-linux-source.tar.bz2 tar -xvf OK3568-linux-source.tar.bz2 cd OK3568-linux-source ./build.sh提示:全编译过程耗时较长(约5-8小时),建议在性能较好的机器上执行
2. Qt开发环境配置
2.1 Qt工具链路径设置
全编译完成后,在output目录下会生成完整的工具链。设置Qt编译环境:
export PATH=$PWD/buildroot/output/OK3568/host/bin:$PATH export QT_HOST_PATH=/usr/local/Qt-5.12.9 # 根据实际安装路径调整2.2 验证qmake可用性
检查Qt交叉编译工具是否正常工作:
qmake -v # 应输出类似:QMake version 3.1 Using Qt version 5.12.9 in /path/to/sysroot2.3 开发板系统准备
确保开发板系统已正确烧写并配置网络:
adb connect 192.168.x.x # 连接开发板 adb shell mkdir -p /usr/local/qt5/lib adb push libQt5Core.so.5 /usr/local/qt5/lib # 推送必要的Qt库3. 创建第一个Qt项目
3.1 项目结构设计
创建简单的窗口应用程序:
HelloQt/ ├── main.cpp ├── widget.cpp ├── widget.h └── HelloQt.promain.cpp示例:
#include <QApplication> #include "widget.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.show(); return a.exec(); }3.2 交叉编译配置
修改.pro文件添加交叉编译选项:
TARGET = HelloQt QT += widgets TEMPLATE = app # 交叉编译配置 target.path = /usr/local/qt5/bin INSTALLS += target3.3 编译与部署
执行交叉编译:
qmake && make adb push HelloQt /usr/local/qt5/bin adb shell "export LD_LIBRARY_PATH=/usr/local/qt5/lib && /usr/local/qt5/bin/HelloQt"4. 高级开发技巧与调试
4.1 常见问题解决
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 运行时报找不到库 | 库路径未设置 | 设置LD_LIBRARY_PATH环境变量 |
| 界面显示异常 | 显示驱动不匹配 | 检查FB或Wayland后端配置 |
| 程序崩溃无输出 | 缺少调试符号 | 编译时添加-g选项 |
4.2 性能优化建议
使用QML时启用硬件加速:
import QtQuick 2.12 import QtQuick.Window 2.12 Window { visible: true flags: Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint renderType: Item.NativeRendering // 启用原生渲染 }减少不必要的动态库加载:
strip --strip-unneeded HelloQt # 去除调试符号
4.3 远程调试配置
在开发板上启动gdbserver:
adb shell gdbserver :1234 /usr/local/qt5/bin/HelloQt在主机端连接调试:
aarch64-linux-gnu-gdb HelloQt (gdb) target remote 192.168.x.x:12345. 实战案例:摄像头应用开发
5.1 添加多媒体支持
修改.pro文件引入Qt多媒体模块:
QT += multimedia multimediawidgets5.2 简易摄像头实现
#include <QCamera> #include <QCameraViewfinder> Widget::Widget(QWidget *parent) : QWidget(parent) { QCamera *camera = new QCamera; QCameraViewfinder *viewfinder = new QCameraViewfinder(this); camera->setViewfinder(viewfinder); camera->start(); }5.3 部署与测试
# 推送多媒体相关库 adb push libQt5Multimedia.so* /usr/local/qt5/lib/ adb push libQt5MultimediaWidgets.so* /usr/local/qt5/lib/ # 设置必要的环境变量 adb shell "export QT_PLUGIN_PATH=/usr/local/qt5/plugins && \ export QML2_IMPORT_PATH=/usr/local/qt5/qml && \ /usr/local/qt5/bin/CameraApp"在实际项目中,我们发现RK3568的VPU硬件加速能显著提升视频处理性能。通过修改Qt的底层实现,可以充分利用这块处理器的多媒体能力。
