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

保姆级教程:在Ubuntu 20.04上为RK3588(ARM64)交叉编译Qt 5.15.2开发环境

保姆级教程在Ubuntu 20.04上为RK3588ARM64交叉编译Qt 5.15.2开发环境RK3588作为新一代高性能ARM64处理器在边缘计算和嵌入式领域展现出强大潜力。而Qt框架凭借其跨平台特性和丰富的GUI组件库成为开发嵌入式应用的首选方案之一。本文将手把手带你完成从工具链配置到Qt Creator集成的全流程特别针对编译过程中的Unknown module等典型报错提供解决方案。1. 环境准备与工具链安装在开始交叉编译之前需要确保主机环境满足基本要求。推荐使用Ubuntu 20.04 LTS作为开发平台其长期支持特性和稳定的软件源能减少环境配置的意外问题。1.1 安装基础依赖首先更新软件源并安装必要的开发工具sudo apt update sudo apt install -y build-essential cmake git python3接下来安装ARM64交叉编译工具链。官方推荐的gcc-aarch64-linux-gnu包版本可能存在兼容性问题建议使用Linaro维护的版本sudo apt install -y gcc-aarch64-linux-gnu g-aarch64-linux-gnu验证工具链是否安装成功aarch64-linux-gnu-gcc --version # 应输出类似aarch64-linux-gnu-gcc (Ubuntu 9.4.0-1ubuntu1~20.04) 9.4.01.2 配置系统环境变量为后续编译方便建议设置以下环境变量。可以将这些配置添加到~/.bashrc文件中export CROSS_COMPILEaarch64-linux-gnu- export CC${CROSS_COMPILE}gcc export CXX${CROSS_COMPILE}g export SYSROOT/usr/aarch64-linux-gnu注意如果使用非标准安装路径的工具链需要额外配置PATH变量指向对应的bin目录2. Qt源码获取与配置2.1 下载Qt源码包Qt官方提供了多种获取源码的方式。对于5.15.2版本建议从官方镜像下载完整源码包wget https://download.qt.io/archive/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz tar xvf qt-everywhere-src-5.15.2.tar.xz cd qt-everywhere-src-5.15.22.2 配置编译参数创建编译配置脚本configure.sh内容如下#!/bin/bash ./configure \ -prefix $PWD/install \ -opensource \ -confirm-license \ -xplatform linux-aarch64-gnu-g \ -no-opengl \ -nomake examples \ -nomake tests \ -skip qtdoc \ -skip qtwebengine \ -sysroot $SYSROOT关键参数说明-prefix指定安装目录-xplatform指定交叉编译目标平台-skip跳过不需要的模块以加快编译速度赋予执行权限并运行配置脚本chmod x configure.sh ./configure.sh3. 解决编译过程中的常见问题3.1 处理Unknown module错误编译过程中可能会遇到如下错误Unknown module(s) in QT: bootstrap-private这是因为某些模块依赖关系未正确解析。解决方法是在配置时显式禁用相关模块./configure \ ...其他参数... \ -no-feature-bootstrap \ -no-feature-script3.2 修复链接器错误当出现链接器找不到符号的问题时通常需要检查工具链的sysroot路径是否正确是否缺少必要的库文件可以通过以下命令验证find $SYSROOT -name libstdc.so*如果缺少某些库需要安装对应的交叉编译版本sudo apt install -y libstdc6-arm64-cross4. Qt Creator集成与项目配置4.1 安装Qt Creator虽然可以从Ubuntu仓库安装但建议下载最新版以获得更好的ARM支持sudo apt install -y qtcreator4.2 配置交叉编译工具链打开Qt Creator进入工具→选项→Kits在编译器选项卡中添加C:/usr/bin/aarch64-linux-gnu-gccC:/usr/bin/aarch64-linux-gnu-g在Qt Versions中添加编译生成的qmake路径/path/to/qt-everywhere-src-5.15.2/install/bin/qmake创建新Kit选择上述编译器和Qt版本4.3 创建测试项目新建Qt Widgets项目时选择刚配置的ARM64 Kit。关键配置项Build directory:build-arm64Run settings: 部署到RK3588设备示例CMakeLists.txt需要添加交叉编译标志set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc) set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g)5. 部署与调试技巧5.1 远程部署配置在Qt Creator中配置RK3588设备的远程连接进入设备→添加→通用Linux设备填写设备IP、用户名和密码测试连接并保存5.2 性能优化建议针对RK3588的特性推荐以下编译选项./configure \ ...其他参数... \ -optimized-qmake \ -reduce-relocations \ -ltcg5.3 常见问题排查表问题现象可能原因解决方案运行时报GLIBCXX错误设备上的libstdc版本过旧静态链接libstdc或更新设备库界面显示异常缺少平台插件部署时包含libqt5platformheaders启动崩溃缺少依赖库使用ldd检查动态依赖关系6. 高级配置与优化6.1 选择性编译模块为减少最终安装包大小可以只编译必要的模块。编辑qtmodule.pri文件QT_CONFIG -no-feature-sql -no-feature-network -no-feature-xml6.2 使用ccache加速编译安装ccache并配置环境变量sudo apt install -y ccache export CCccache aarch64-linux-gnu-gcc export CXXccache aarch64-linux-gnu-g6.3 构建系统对比下表比较了不同构建系统的特点构建系统优点缺点适用场景qmake简单易用功能有限小型Qt项目CMake功能强大学习曲线陡复杂跨平台项目Autotools兼容性好配置复杂需要最大兼容性的项目在实际RK3588项目中我通常采用CMake作为构建系统。一个典型的CMake配置片段如下set(CMAKE_PREFIX_PATH /path/to/qt/install/lib/cmake) find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED) target_link_libraries(myapp Qt5::Core Qt5::Gui Qt5::Widgets)

相关文章:

保姆级教程:在Ubuntu 20.04上为RK3588(ARM64)交叉编译Qt 5.15.2开发环境

保姆级教程:在Ubuntu 20.04上为RK3588(ARM64)交叉编译Qt 5.15.2开发环境 RK3588作为新一代高性能ARM64处理器,在边缘计算和嵌入式领域展现出强大潜力。而Qt框架凭借其跨平台特性和丰富的GUI组件库,成为开发嵌入式应用的…...

STM32H750驱动正点原子1.3寸屏,这个SPI4参数没设对,屏幕会卡顿黑屏

STM32H750驱动正点原子1.3寸屏的SPI4参数优化指南 第一次在STM32H750核心板上成功点亮正点原子1.3寸屏时,那种成就感确实让人兴奋。但当我在压力测试阶段遇到屏幕突然黑屏、显示卡顿甚至必须连接调试器才能工作的诡异现象时,这种兴奋很快被困惑取代。经过…...

产品经理和开发吵架?用‘用户故事地图’反推用例图,让需求落地不再扯皮

用户故事地图到用例图:化解产品与开发冲突的实战指南 会议室里的气氛凝固得像块冰。产品经理指着原型图强调"这个功能必须按用户习惯设计",开发组长则敲着桌子反驳"技术实现根本不合理"。这样的场景在敏捷团队中几乎每天都在上演——…...

OpenNext实战:将Next.js应用无缝部署至Cloudflare Workers边缘网络

1. 项目概述:当Next.js遇见Cloudflare Workers如果你和我一样,是个喜欢折腾前端部署的开发者,那你肯定对Next.js和Cloudflare Workers这两个名字不陌生。前者是React生态里最强大的全栈框架,后者是边缘计算领域的明星平台。长久以…...

别再傻傻分不清!一文搞懂蓝牙BR/EDR、BLE和LE2M到底有啥区别(附应用场景选择指南)

蓝牙技术全景解析:从BR/EDR到LE2M的实战选型指南 当你打开手机连接无线耳机时,是否想过背后是哪种蓝牙协议在默默工作?市面上超过90%的物联网设备都搭载了蓝牙模块,但开发者常陷入技术选型的迷雾。本文将用真实产品案例&#xff0…...

使用Taotoken聚合平台为你的Nodejs后端服务接入多模型能力

使用Taotoken聚合平台为你的Nodejs后端服务接入多模型能力 1. 多模型接入的核心价值 在现代Web应用开发中,集成AI功能已成为提升用户体验的重要手段。然而,直接对接多个大模型厂商往往面临接口差异、密钥管理复杂等问题。Taotoken作为大模型聚合分发平…...

Windows安卓应用安装终极指南:告别臃肿模拟器,体验轻量级APK安装方案

Windows安卓应用安装终极指南:告别臃肿模拟器,体验轻量级APK安装方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否厌倦了在Windows上运…...

终极指南:3种方法在Windows上直接安装Android应用无需模拟器

终极指南:3种方法在Windows上直接安装Android应用无需模拟器 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上流畅运行手机应用&#xff0…...

IntelliJ IDEA AI插件实战:用LLM自动化代码注释与文档生成

1. 项目概述:一个为开发者“减负”的智能助手如果你是一名开发者,尤其是使用 JetBrains 全家桶(比如 IntelliJ IDEA、PyCharm、WebStorm)的开发者,那么你一定对“写注释”、“写文档”、“解释代码”这类重复性工作深恶…...

Go-CQHTTP终极指南:构建跨平台QQ机器人的完整解决方案

Go-CQHTTP终极指南:构建跨平台QQ机器人的完整解决方案 【免费下载链接】go-cqhttp cqhttp的golang实现,轻量、原生跨平台. 项目地址: https://gitcode.com/gh_mirrors/go/go-cqhttp 在当今数字化时代,QQ机器人已经成为社群管理、客服自…...

从USB3.0到PCIe 5.0:高速串行链路耦合电容的‘规矩’与‘变通’全解析

从USB3.0到PCIe 5.0:高速串行链路耦合电容的设计哲学与技术演进 在数字通信领域,高速串行链路的设计犹如在钢丝上跳舞——需要在信号完整性与系统可靠性之间寻找精妙的平衡。耦合电容的放置策略,这个看似简单的设计选择,实则蕴含…...

炉石传说脚本终极指南:5个步骤掌握自动化对战工具

炉石传说脚本终极指南:5个步骤掌握自动化对战工具 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本) 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-Script Hearthstone-Script 是一款专为炉石传说玩…...

从芯片设计到软件调试:逻辑函数五种表示法在实际工程中的隐藏用法与避坑指南

从芯片设计到软件调试:逻辑函数五种表示法在实际工程中的隐藏用法与避坑指南 刚入行的硬件工程师小张最近遇到了一个棘手问题:他设计的Verilog模块在仿真时功能正常,但实际烧录到FPGA后却出现了随机错误。经过三天三夜的调试,最终…...

ThinkPad X280二手淘机指南:从接口缩水到板载内存,这些坑你绕开了吗?

ThinkPad X280二手淘机避坑指南:从验机技巧到性价比分析 在预算有限的办公设备选择中,二手ThinkPad始终是务实主义者的首选。作为X系列最后一款12.5英寸机型,X280在二手市场的价格已跌至2000-3000元区间,但这款2018年发布的商务本…...

从‘控制字6040’到‘状态字6041’:手把手图解EtherCAT伺服驱动器的对象字典通讯全流程

从控制字6040到状态字6041:EtherCAT伺服驱动器对象字典通讯实战指南 第一次接触EtherCAT总线伺服的技术人员,面对密密麻麻的十六进制索引号时,往往会感到无从下手。对象字典就像一本神秘的操作手册,而控制字6040h和状态字6041h则是…...

不只是安装:用DVWA搭建你的第一个Web安全实验室(Kali+Apache2+MySQL实战)

不只是安装:用DVWA搭建你的第一个Web安全实验室(KaliApache2MySQL实战) 在网络安全领域,理论知识的积累固然重要,但真正的技能提升往往来自于实践。DVWA(Damn Vulnerable Web Application)作为一…...

ESP32-FreeRTOS实战:多任务架构与物联网应用开发指南

1. 项目概述与核心价值最近在捣鼓一个智能家居的传感器节点,需要它既能实时采集温湿度、光照数据,又能通过Wi-Fi稳定上报,还得在电池供电下撑够半年。选型时,ESP32这颗芯片自然成了首选,它集成了双核处理器和Wi-Fi/蓝牙…...

别再乱用try-catch-finally了!Spring Boot项目里这样处理异常才优雅

Spring Boot异常处理的艺术:告别try-catch-finally的野蛮时代 在微服务架构盛行的今天,一个优雅的异常处理机制已经成为区分专业开发与业余编码的关键标志。想象这样的场景:当你的API被疯狂调用时,某个服务突然抛出异常&#xff…...

除了‘赌上爷爷的名号’:盘点《金田一》里那些被我们忽略的‘技术细节’与时代印记

技术考古:《金田一少年事件簿》中的时代密码与推理科学 当90年代的日本读者翻开《周刊少年Magazine》时,他们或许未曾意识到,那些精心设计的杀人诡计背后,隐藏着一部生动的科技社会进化史。从固定电话到智能手机,从CRT…...

扩散模型与强化学习结合的图像局部优化技术

1. 项目概述:当扩散模型遇到强化学习去年在处理一批医学影像数据时,我遇到了一个棘手问题——那些低分辨率的CT扫描图像经过常规超分算法处理后,虽然整体清晰度提升了,但关键病灶区域的纹理细节却变得模糊不清。正是这个痛点催生了…...

深度解析FanControl:Windows系统风扇控制的系统方案与优化策略

深度解析FanControl:Windows系统风扇控制的系统方案与优化策略 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Tre…...

MAA明日方舟自动化助手:3分钟快速上手完整指南

MAA明日方舟自动化助手:3分钟快速上手完整指南 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://gitcode.co…...

HS2-HF_Patch终极指南:如何一键汉化优化Honey Select 2游戏

HS2-HF_Patch终极指南:如何一键汉化优化Honey Select 2游戏 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch HS2-HF_Patch是专为《Honey Select 2》设…...

宝可梦合规性检查:5分钟掌握AutoLegalityMod插件终极指南

宝可梦合规性检查:5分钟掌握AutoLegalityMod插件终极指南 【免费下载链接】PKHeX-Plugins Plugins for PKHeX 项目地址: https://gitcode.com/gh_mirrors/pk/PKHeX-Plugins 还在为宝可梦数据合法性检查而烦恼吗?AutoLegalityMod插件通过智能自动化…...

为内容生成流水线设计基于用量成本的模型调度策略

为内容生成流水线设计基于用量成本的模型调度策略 1. 内容生成流水线的成本挑战 内容创作团队在规模化生产过程中,往往面临模型选择与成本控制的平衡问题。不同生成任务对模型能力的需求存在差异:常规产品描述可能不需要最高性能的模型,而创…...

如何3倍提升歌词管理效率:163MusicLyrics智能歌词获取工具完整指南

如何3倍提升歌词管理效率:163MusicLyrics智能歌词获取工具完整指南 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 还在为找不到心爱歌曲的歌词而烦恼吗&…...

保姆级教程:在Windows 11的Docker Desktop上部署Netdata监控(含汉化与WSL2配置)

Windows 11环境下Docker Desktop部署Netdata全流程指南 对于习惯Windows环境的开发者来说,想要实时监控本地开发环境的资源使用情况往往需要借助第三方工具。Netdata作为一款开源的实时监控工具,以其轻量级和丰富的可视化功能受到开发者青睐。本文将详细…...

3步掌握Qwerty Learner:提升英语打字效率的终极方案

3步掌握Qwerty Learner:提升英语打字效率的终极方案 【免费下载链接】qwerty-learner 为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers 项目地址: https://gitco…...

别再拆车了!手把手教你用CAN诊断仪给汽车ECU刷写新固件(附完整流程与避坑点)

别再拆车了!手把手教你用CAN诊断仪给汽车ECU刷写新固件(附完整流程与避坑点) 作为一名在4S店摸爬滚打八年的技术主管,我见过太多同行为了升级一个ECU而大动干戈拆解仪表台——其实90%的情况根本不需要。上周刚用PCAN设备给一辆途观…...

深度解析League Akari:英雄联盟客户端自动化工具的架构设计与实战应用

深度解析League Akari:英雄联盟客户端自动化工具的架构设计与实战应用 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akar…...