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

告别交叉编译烦恼:用SD卡在RK3588上本地构建Qt 5.15.0全记录(含OpenGL环境)

RK3588本地构建Qt 5.15.0全流程从SD卡配置到OpenGL实战当开发者需要在嵌入式设备上搭建完整的Qt开发环境时传统交叉编译方式往往伴随着复杂的工具链配置和第三方库依赖问题。本文将详细介绍如何在RK3588开发板上利用SD卡作为扩展存储完成Qt 5.15.0的本地编译全过程特别针对OpenGL ES图形栈的配置进行深度解析。1. 硬件准备与系统配置RK3588作为一款高性能ARM处理器其四核Cortex-A76和四核Cortex-A55的组合完全能够胜任本地编译任务。我们需要准备以下硬件RK3588开发板确保已安装Ubuntu或Debian系统高速SD卡建议使用32GB以上容量Class 10及以上速度等级稳定电源编译过程耗时长需保证供电稳定网络连接用于安装依赖包和下载源码首先将SD卡插入开发板通过以下命令识别设备节点lsblk -f通常SD卡会被识别为/dev/mmcblk1具体名称可能因系统而异。接下来创建挂载点并格式化sudo mkdir -p /data1 sudo mkfs.ext4 /dev/mmcblk1 sudo mount /dev/mmcblk1 /data1为确保每次启动自动挂载编辑/etc/fstab文件添加/dev/mmcblk1 /data1 ext4 defaults 0 22. Qt源码与环境准备从Qt官方仓库获取源码包qt-everywhere-src-5.15.0.tar.xz建议使用axel多线程下载加速sudo apt install axel axel -n 8 https://download.qt.io/archive/qt/5.15/5.15.0/single/qt-everywhere-src-5.15.0.tar.xz将下载的源码包解压到SD卡空间tar -xf qt-everywhere-src-5.15.0.tar.xz -C /data1安装基础编译工具链和依赖sudo apt update sudo apt install build-essential libgl1-mesa-dev libxcb-* \ libxkbcommon-x11-dev libx11-xcb-dev libxrender-dev \ libxi-dev mesa-common-dev libglu1-mesa-dev -y特别需要注意的图形库依赖依赖包功能说明是否必须libgl1-mesa-devOpenGL核心库必需libgles2-mesa-devOpenGL ES 2.0支持必需libxcb-xinerama0多显示器支持可选libxkbcommon-dev键盘布局处理推荐3. 编译配置与参数优化进入源码目录创建自动化编译脚本cd /data1/qt-everywhere-src-5.15.0 touch build.sh chmod x build.sh编辑build.sh文件写入以下配置参数#!/bin/bash ./configure -prefix /data1/qt-5.15.0-install \ -confirm-license \ -opensource \ -release \ -xplatform linux-aarch64-gnu-g \ -opengl es2 \ -egl \ -eglfs \ -qpa xcb \ -linuxfb \ -no-pch \ -qt-libjpeg \ -qt-libpng \ -qt-zlib \ -skip qtlocation \ -skip qtscript \ -nomake examples \ -nomake tests关键参数解析-opengl es2启用OpenGL ES 2.0支持适配RK3588的Mali GPU-eglfs配置EGLFS作为后备显示平台-xplatform指定目标平台为ARM64架构-no-pch禁用预编译头减少内存占用执行配置检查./build.sh若配置成功终端将显示Qt is now configured...提示。常见问题处理提示若遇到Could not resolve SDK...错误需检查是否安装了所有依赖包建议重复运行apt install命令确保无遗漏4. 编译过程与性能优化开始编译前建议调整swap空间以避免内存不足sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile启动编译过程根据核心数调整-j参数make -j6编译时间预估基于RK3588性能阶段耗时预估内存占用QtCore40分钟2.5GBQtGui1.5小时3GBQtWidgets1小时2.8GB其他模块1小时1-2GB编译过程中可监控系统状态watch -n 1 free -h sensors uptime遇到编译错误时的处理流程检查终端错误输出定位失败模块确认相关依赖是否安装完整尝试单独编译问题模块cd qtbase make -j2清理后重试make clean make -j45. 安装与环境配置编译完成后安装到指定目录sudo make install设置环境变量编辑~/.bashrc文件添加export QT_ROOT/data1/qt-5.15.0-install export PATH$QT_ROOT/bin:$PATH export LD_LIBRARY_PATH$QT_ROOT/lib:$LD_LIBRARY_PATH export QT_QPA_PLATFORM_PLUGIN_PATH$QT_ROOT/plugins/platforms export QT_QPA_PLATFORMxcb应用环境变量并验证安装source ~/.bashrc qmake -v预期应显示QMake version 3.1等信息。创建测试项目验证OpenGL支持// gltest.cpp #include QApplication #include QOpenGLWindow class GLWindow : public QOpenGLWindow { protected: void initializeGL() override { glClearColor(0.2f, 0.3f, 0.4f, 1.0f); } void paintGL() override { glClear(GL_COLOR_BUFFER_BIT); } }; int main(int argc, char **argv) { QApplication app(argc, argv); GLWindow window; window.resize(800, 600); window.show(); return app.exec(); }编译测试程序qmake -project qmake make ./gltest6. 开发工作流优化为提高开发效率建议配置以下工具链远程开发在PC端使用VS Code配合Remote-SSH插件安装Qt插件实现代码提示自动化部署rsync -avz ./project userrk3588:/data1/projects/ ssh userrk3588 cd /data1/projects qmake make性能调优使用gfxinfo分析OpenGL性能adb shell dumpsys gfxinfo package-nameQt渲染日志export QT_LOGGING_RULESqt.qpa.*true常见问题解决方案黑屏问题检查QT_QPA_PLATFORM环境变量尝试xcb或eglfs字体缺失安装字体包sudo apt install fonts-noto输入法异常设置QT_IM_MODULEibus7. 进阶配置与调试技巧对于需要深度定制的开发者可考虑以下高级配置自定义OpenGL ES驱动 RK3588的Mali GPU支持通过以下方式调优export MALI_DMA_BUF_MAP_ON_DEMAND1 export MALI_PLATFORM_NAMErk3588Qt Quick加速配置 在/etc/environment中添加QT_QUICK_BACKENDsoftware QSG_RENDER_LOOPbasic性能监控工具集工具安装命令用途glmark2-es2sudo apt install glmark2-es2GPU基准测试stress-ngsudo apt install stress-ngCPU压力测试perfsudo apt install linux-tools-generic系统性能分析调试命令示例# OpenGL调试输出 export QT_LOGGING_RULESqt.qpa.gltrue # 查看EGL配置 eglinfo -B # 检查OpenGL ES版本 glxinfo | grep OpenGL ES通过本指南开发者可以在RK3588上建立完整的Qt开发环境充分利用本地编译的优势避免交叉编译的复杂依赖问题。实际测试显示完整的Qt 5.15.0编译在RK3588上约需5-6小时但获得的开发便利性和运行效率提升值得投入。
http://www.gsyq.cn/news/1395845.html

相关文章:

  • 通过Taotoken模型广场为你的应用选择合适的AI模型
  • 用Indirect Display驱动在Win10上实现桌面特效(球面化/曲面化)的保姆级教程
  • 操作系统与虚拟化技术如何影响网络功能性能:从原理到实战优化
  • 多语种翻译响应延迟低于320ms,行业首份PlayAI翻译性能压测报告全公开,仅限本周下载!
  • 真正有效的 RAG Chunking:语义切分、Overlap(重叠)与基于评估驱动的调优
  • Meta-Transformer:基于元学习与Transformer的小样本自动调制分类技术
  • scrapy 框架问题解决 AttributeError: module ‘OpenSSL.SSL‘ has no attribute ‘SSLv3_METHOD‘
  • 新手教程使用Python和OpenAI兼容协议一分钟接入Taotoken调用模型
  • 消费返物业费系统小程序/APP搭建
  • Python PRAW介绍(Reddit API封装库)Python Reddit API Wrapper、惰性加载Lazy Loading、asyncpraw、信息聚合
  • 3分钟解锁Web翻页动画:StPageFlip让数字阅读体验更自然
  • PTS精密链节式输送线高精度性能的技术原理解析
  • Hermes Agent 完全安装指南(Linux、macOS、Windows、Android)
  • 【高校科研组内部流出】:ChatGPT论文润色合规边界白皮书(附Nature/Science官方AI使用声明逐条对照表)
  • Lovable安全平台开发必知的5大合规红线,GDPR+等保2.0双认证通关路径详解
  • 深入解析Linux Thermal子系统架构
  • BMS测试员必看:如何用CANoe+vTESTstudio设计覆盖过压、均衡、SOC的自动化测试场景?
  • AI智能配乐软件哪个好?5款主流工具对比评测
  • Godot 4.2插件实战筛选指南:稳定性、可扩展性与调试友好性黄金三角
  • 司拉德帕Livdelzi常见副作用为背痛及转氨酶一过性升高,需定期监测肝功能
  • 告别数据线:巧用ADB与Scrcpy打造高效无线投屏工作流
  • 阿富汗物流现状与操作指南(干货版)
  • 当AI工具开始自我迭代:2030年Auto-Tooling范式爆发前夜(OpenAI内部技术路线图泄露片段深度还原)
  • 冷启动优化在AI Agent Harness工程中的落地实践与效果提升
  • 收藏!小白程序员也能抓住的风口:年薪80万+的AI Agent开发之路
  • 福利来了!CCSDS译码器IP核免费领!
  • MyBatis缓存机制与注解开发
  • Node.js + Chrome DevTools 完整联调详细步骤
  • 避坑指南:用Qt开发蓝牙上位机时,那些官方文档没细说的信号槽和内存管理
  • 沙利鲁单抗Kevzara常见副作用为上呼吸道感染中性粒细胞减少及注射部位反应