当前位置: 首页 > news >正文

保姆级教程:在Ubuntu上为RK3568配置Qt Creator交叉编译环境(含SSH远程部署)

保姆级教程:在Ubuntu上为RK3568配置Qt Creator交叉编译环境(含SSH远程部署)

嵌入式开发的世界里,RK3568凭借其强大的性能和丰富的接口资源,正成为越来越多项目的首选平台。而Qt Creator作为跨平台的集成开发环境,其直观的界面设计和强大的调试功能,让嵌入式应用开发变得事半功倍。本文将带你从零开始,在Ubuntu系统上搭建完整的Qt Creator交叉编译环境,并实现应用程序的SSH远程部署到RK3568设备。

1. 环境准备与Qt Creator安装

在开始配置之前,我们需要确保Ubuntu系统已经安装了必要的依赖项。打开终端,执行以下命令安装基础工具链:

sudo apt update sudo apt install -y build-essential cmake git libgl1-mesa-dev

对于Qt Creator的安装,官方提供了多种方式。这里推荐使用在线安装器,它能自动处理依赖关系并保持版本更新:

wget https://download.qt.io/official_releases/online_installers/qt-unified-linux-x64-online.run chmod +x qt-unified-linux-x64-online.run ./qt-unified-linux-x64-online.run

安装过程中有几个关键选择需要注意:

  • 选择Qt CreatorQt 5.15.x版本(目前最稳定的LTS版本)
  • 勾选Desktop gcc组件(用于本地测试)
  • 在Additional Libraries中确保Qt ChartsQt Quick Controls 2被选中

安装完成后,建议创建一个工作目录来存放后续的交叉编译工具链和项目文件:

mkdir -p ~/rk3568_qt cd ~/rk3568_qt

2. 获取并配置Buildroot交叉编译工具链

RK3568采用ARM64架构,我们需要对应的交叉编译工具链。Buildroot是一个优秀的嵌入式Linux系统构建工具,它生成的工具链与RK3568官方SDK完美兼容。

首先获取Buildroot源代码:

git clone https://git.buildroot.net/buildroot cd buildroot

配置Buildroot以包含Qt5支持:

make menuconfig

在配置界面中,需要特别关注以下几个选项:

  1. Target optionsTarget Architecture选择AArch64 (little endian)
  2. ToolchainC library选择glibc
  3. Target packagesGraphic libraries→ 启用Qt5并选择需要的模块

配置完成后,开始编译工具链:

make -j$(nproc)

编译完成后,工具链包会生成在output/images/目录下,文件名类似aarch64-buildroot-linux-gnu_sdk-buildroot.tar.gz。将其解压并安装:

tar -xzf aarch64-buildroot-linux-gnu_sdk-buildroot.tar.gz -C ~/rk3568_qt cd ~/rk3568_qt/aarch64-buildroot-linux-gnu_sdk-buildroot ./relocate-sdk.sh

3. Qt Creator交叉编译环境配置

现在进入Qt Creator进行交叉编译环境的配置。打开Qt Creator后,按照以下步骤操作:

3.1 添加交叉编译器

  1. 进入工具 → 选项 → Kits → 编译器
  2. 点击添加按钮,选择GCC (C)
  3. 路径中选择工具链中的gcc:~/rk3568_qt/aarch64-buildroot-linux-gnu_sdk-buildroot/usr/bin/aarch64-buildroot-linux-gnu-gcc
  4. 重复上述步骤添加GCC (C++),选择对应的g++编译器

3.2 配置qmake

  1. Qt Versions标签页点击添加
  2. 选择工具链中的qmake:~/rk3568_qt/aarch64-buildroot-linux-gnu_sdk-buildroot/usr/bin/qmake
  3. 为这个Qt版本命名,如"Qt 5.15.2 (RK3568)"

3.3 创建构建套件(Kit)

  1. Kits标签页点击添加
  2. 配置以下参数:
    • 名称: RK3568 Qt Kit
    • 设备类型: 通用Linux设备
    • 编译器(C): 之前添加的GCC (C)
    • 编译器(C++): 之前添加的GCC (C++)
    • Qt版本: 选择刚配置的Qt版本
    • Qt mkspec: linux-aarch64-gnu-g++

配置完成后,可以通过创建一个简单的Qt Widgets项目来测试套件是否工作正常。

4. SSH远程部署配置

要让Qt Creator能够将编译好的应用程序部署到RK3568设备上,需要进行SSH配置。

4.1 设备端准备

首先确保RK3568设备已经启动SSH服务并设置了静态IP。在设备终端执行:

sudo systemctl enable ssh sudo systemctl start ssh ifconfig eth0 192.168.1.100 netmask 255.255.255.0

4.2 Qt Creator设备配置

  1. 进入工具 → 选项 → 设备 → 添加
  2. 选择通用Linux设备
  3. 填写设备信息:
    • 名称: RK3568 Dev Board
    • 主机名: 192.168.1.100
    • 用户名: root
    • 认证类型: 密码认证
    • 密码: rockchip(默认密码)

4.3 部署设置

在项目配置中,添加部署步骤:

  1. 项目视图的运行设置中,选择部署配置
  2. 添加上传文件步骤,将可执行文件上传到设备上的/usr/local/bin
  3. 添加执行命令步骤,设置可执行文件的权限:chmod +x /usr/local/bin/your_app

5. 常见问题解决方案

在实际部署过程中,可能会遇到以下典型问题:

5.1 EGLFS插件缺失

错误信息:

qt.qpa.plugin: Could not find the Qt platform plugin "eglfs"

解决方案:

  1. 在设备上检查可用的平台插件:
    ls /usr/lib/qt/plugins/platforms/
  2. 如果缺少eglfs,可以:
    • 使用其他可用插件,如-platform linuxfb
    • 或者在Buildroot配置中重新编译包含eglfs的Qt

5.2 XDG_RUNTIME_DIR错误

错误信息:

error: XDG_RUNTIME_DIR is invalid or not set in the environment.

解决方案: 在Qt Creator的运行配置中添加环境变量:

XDG_RUNTIME_DIR=/tmp

5.3 字体显示问题

如果应用程序中的字体显示异常,可以在设备上安装字体:

apt install ttf-dejavu

或者在代码中指定字体路径:

QFontDatabase::addApplicationFont("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf");

6. 高级调试技巧

为了更高效地开发和调试RK3568上的Qt应用,可以考虑以下技巧:

6.1 远程调试

  1. 在设备上安装gdbserver:
    apt install gdbserver
  2. 在Qt Creator中配置远程调试:
    • 项目运行设置中,选择调试服务器
    • 设置gdbserver路径为/usr/bin/gdbserver

6.2 性能分析

使用Qt Creator内置的性能分析工具:

  1. 分析菜单中选择QML ProfilerValgrind Memcheck
  2. 确保设备上安装了对应的调试符号

6.3 自定义部署脚本

对于复杂的部署需求,可以创建自定义脚本:

#!/bin/bash # deploy.sh scp $1 root@192.168.1.100:/usr/local/bin/ ssh root@192.168.1.100 "chmod +x /usr/local/bin/$1"

然后在Qt Creator的部署步骤中调用这个脚本。

7. 项目优化建议

当项目规模增大时,需要考虑以下优化措施:

7.1 编译加速

~/.config/QtProject/qtcreator.ini中添加:

[CMake] NinjaPath=/usr/bin/ninja

然后重新生成项目,Qt Creator将使用ninja代替make,显著提升编译速度。

7.2 资源管理

对于嵌入式设备,资源使用需要特别注意:

  • 使用rcc将资源文件编译进二进制
  • .pro文件中添加:
    RESOURCES += resources.qrc CONFIG += resources_big

7.3 内存优化

在RK3568上运行Qt应用时,可以通过以下方式减少内存占用:

  • 使用QML_COMPILER_DISABLE_CACHE环境变量
  • main.cpp中添加:
    QCoreApplication::setAttribute(Qt::AA_DisableShaderDiskCache);

经过以上步骤,你应该已经建立了一个完整的RK3568 Qt开发环境。在实际项目中,根据具体需求可能还需要调整一些配置参数。建议在项目初期就建立完整的持续集成流程,将交叉编译和自动化测试纳入其中,这能显著提高开发效率。

http://www.jsqmd.com/news/767746/

相关文章:

  • 基于深度学习无人机巡检中输电线路缺陷检测系统(YOLOv8+UI界面+数据集+训练代码)
  • AI编程助手高效协作:结构化工具调用与上下文管理实践
  • 告别卡顿!在Ubuntu 22.04上为Chrome/Brave开启硬件解码,拯救你的笔记本续航
  • PeakFit 4.12安装包下载安装教程
  • 终极GTA5线上工具:完全免费的游戏体验增强指南
  • 抠图工具有哪些?2026年最全对比指南,找到适合你的一键抠图方案
  • Python+OpenCV+Flask实现本地摄像头MJPEG网络视频流
  • HoRain云--Zig编程:数组与切片全解析
  • 告别逐帧重建:4D Gaussian Splatting如何用一套‘标准模型’搞定动态场景?
  • Node.js GraphQL API 开发脚手架:基于TypeScript与Prisma的快速启动指南
  • 腾讯朱雀开源AI安全平台A.I.G:一站式红队测试与漏洞扫描实战
  • 2026年质量好的德国高端眼镜/体制内高端眼镜精选推荐公司 - 品牌宣传支持者
  • 一文讲清AI相关专业名词
  • 透明底图制作方法大全:2026年最实用的AI抠图工具推荐
  • 语雀文档批量导出的终极解决方案:3步实现免费高效本地备份
  • 告别数据丢失!FPGA与USB2.0高速通信的实战避坑指南(基于Cypress FX2LP)
  • Pearcleaner终极指南:5分钟彻底清理Mac残留文件,免费开源更安心
  • Renesas RZ/T2M双核Cortex-R52在工业控制中的应用
  • LLM在CUDA编程中的表现与优化实践
  • 深入浅出:MCP (Model Context Protocol) 协议如何重塑 AI Agent 的生态
  • AISMM医疗模型落地失败率高达68%?揭秘三甲医院绕不开的4类数据断层与2套联邦学习加固方案
  • 2026年4月大厂制造圆顶通风口加工厂家推荐,扇形风帽/仿生鸟翼形风帽/排风烟道风帽,圆顶通风口非标定制哪家好 - 品牌推荐师
  • CSS四大选择器:90%的人只用到前两个,第三个能让你代码效率翻倍!
  • 百度网盘直链解析终极指南:告别限速困扰,实现满速下载
  • 2025年各国地理距离、与中国地理距离
  • 别再混淆了!一次搞懂CIE Lab、LCh、XYZ和sRGB的区别与转换(附C++代码验证)
  • 什么是RWS责任羊毛认证?懂羊毛的人,都认准这枚「良心标识」
  • Selenium爬虫实战:用User Data绕过登录验证,5分钟搞定需要插件的网站访问
  • 基于STM32的智能宿舍管理系统设计与实现
  • VPS 遭遇 CC 攻击怎么配置 Cloudflare 防护