qt5.15.8在RK3326芯片编译过程

Qt 5.14.2 aarch64 静态交叉编译实战指南 静态链接是嵌入式 Qt 应用实现单文件部署、系统无关性与运行时确定性的核心技术路径。其本质是在链接阶段将 Qt 核心库(Core/Gui/Widgets)、图形后端(EGLFS)、加密模块(OpenSSL)及系统依赖(zlib、freetype)全部归档为 .a 文件并精确控制符号解析与插件注册机制。该方案规避了动态库版本冲突、libc 升级失效、目标机无包管理器等典型交付风险,特别适用于电力监控、工业终端、边缘计算等封闭 ARM 环境。本文聚焦 Qt 5.14.2 这一关键 LTS 版本,结合 Linar 阅读详情

1、用Buildroot选择qt对应模块编译,有些控件用不了,报段错误。比如:TabView、Switch、虚拟键盘等等。

2、后面通过看Linux环境下arm开发指南,书中没有用buildroot去编译qt模块,而是交叉编译qt,然后将qt放到arm板下

3、执行以下命令,使能qt环境变量。

export QTDIR=/opt/arm_qt5.15.8_aarch64
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH$QTDIR:$QTDIR/lib
export QT_QPA_PLATFORM=wayland

4、由于当前屏幕是竖屏,需要旋转屏幕。刚开始用buildroot编译后,可以用eglfs平台,然后用的以下代码旋转平台,后面遇到了第一点说的有些控件用不了,所以放弃了。

main.cpp


#ifdef PLATFORM_ARM
    view.rootObject()->setProperty("rotateScreen", false);
    view.showFullScreen();
#else
    view.rootObject()->setProperty("rotateScreen", false);
    view.show();
#endif
// 用于arm平台翻转屏幕
    property bool rotateScreen: true

    transform: [
        Translate {
            x: rotateScreen ? window.height : 0
        },
        Rotation {
            origin.x: rotateScreen ? window.height : 0
            angle: rotateScreen ? 90 : 0
        }
    ]

接着用linuxfb平台,可以正常运行起来,但是虚拟键盘仍然是竖屏模式,所以也放弃了这个平台。

RK3326默认选择wayland平台,所以最后只能在这个平台上下功夫,第一个坑,wayland需要weston支持,但是运行weston后,会出现默认桌面应用。需要将/etc/xdg/weston/weston.ini.d目录下的ini文件移走或者删掉。第二个坑,wayland启动后有状态栏和背景,需要在/etc/xdg/weston/目录下的weston.ini执行以下指令

[shell]
panel-position=none
background-color=0x00FFFFFF

第三个坑,需要旋转屏幕方向,当前代码是旋转所有屏幕,rk的说明文档里有说旋转某个特定屏幕,但是我试了,没用,估计是名称有问题。

echo "output:all:rotate270" > /tmp/.weston_drm.conf

第四个坑,在启动脚本/etc/init.d/rcS里执行qt程序,结果显示Could not open egl display,但是手动执行又可以,是由于执行当前脚本的时候,环境变量还未设置,所有在执行程序前source /etc/profile后就可以。

第五个坑,wayland的程序是有窗口的,也就是有标题栏,去除标题栏只需要view.showFullScreen();

#include <QGuiApplication>
#include <QQmlContext>
#include <QFontDatabase>
#include <QQuickView>
#include <QQuickItem>
#include "qmlregister.h"
#include "globalsetting.h"
#include "msgqueue.h"
#include "otaupdate.h"
#include "wifimanage.h"
#include "t_smartwrapper.h"

int main(int argc, char *argv[])
{
    qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
    QGuiApplication app(argc, argv);

    // 添加字体
    int fontId = QFontDatabase::addApplicationFont(":/fonts/Ubuntu-R.ttf");
    QStringList loadedFontFamilies = QFontDatabase::applicationFontFamilies(fontId);
    if (!loadedFontFamilies.empty())
    {
        QFont font = loadedFontFamilies.at(0);
        app.setFont(font);
    }

    QmlRegister qmlRegister;
    qmlRegister.init();

    MsgQueue *msgQueue = MsgQueue::getInstance();
    WifiModel *wifiModel = WifiModel::getInstance();
    GlobalSetting *globalSetting = GlobalSetting::getInstance();
    T_SmartWrapper::getInstance();
    OtaUpdate *otaUpgrade = OtaUpdate::getInstance();

    const QUrl url(QStringLiteral("qrc:/main.qml"));
    QQuickView view;
    view.rootContext()->setContextProperty("MsgQueue", msgQueue);
    view.rootContext()->setContextProperty("wifiModel", wifiModel);
    view.rootContext()->setContextProperty("GlobalSetting", globalSetting);
    view.rootContext()->setContextProperty("Ota", otaUpgrade);
    view.setSource(url);

    view.resize(view.rootObject()->width(), view.rootObject()->height());

#ifdef PLATFORM_ARM
    view.rootObject()->setProperty("rotateScreen", false);
    view.showFullScreen();
#else
    view.rootObject()->setProperty("rotateScreen", false);
    view.show();
#endif


    return app.exec();
}

就可以让当前程序占据整个屏幕

第六个坑,字体显示异常,这块需要把Ubuntu上/usr/share/fonts下的字体打包到板子/usr/share/fonts里,可以解决中文,外语,特殊符号等字体问题。

第七个问题,开机logo到UI显示之间存在短暂切换黑屏,如需防止黑屏,可以通过下面的方式短暂冻结weston屏幕内容

  • cd $$SDK /buildroot/output/rockchip_rk3326_64/target/etc/init.d目录下,打开S49weston文件

  • 改动红框里的内容

 

目前是遇到这些问题,后面得好好研究下为啥buildroot不行的问题。

rk3326编译过程!!! 首先准备一个linux环境,本人使用的是ubuntu18.041.硬盘空间最好200G+2.更新下系统到最新。sudo apt-get update ;sudo apt-get upgrade3.准备压缩包rk3326sdk8.1-7072-20190121.tar.gz4.解压出来 tar -zxvfrk3326sdk8.1-7072-20190121... 阅读详情

相关推荐

QT安装MQTT,Ubuntu系统,rk3588交叉编译环境安装,rk3588的arm安装MQTT

因为公司需要,需要帮其他人安装MQTT,而且还需要帮别人配置好交叉编译环境,但是网上的一些攻略试过,还是有问题,于是自己搞好以后,记录一下。

Alon1787的博客 1068

提取buildroot中qt5的编译环境

提取buildroot中qt的编译环境

xuesong10210的博客 1663

Qt 5.14.2 aarch64静态交叉编译实战指南

静态链接是嵌入式Linux应用实现零依赖部署的核心技术,其本质是将Qt库、C++运行时及系统基础库(如libstdc++.a、libgcc_eh.a)全部内联进可执行文件,彻底规避动态库版本冲突与LD_LIBRARY_PATH配置难题。该方案在资源受限的aarch64边缘设备(如RK3399、Hi3516DV300)上具有不可替代的技术价值,尤其适用于无包管理器、精简glibc环境下的GUI固件交付。典型应用场景包括工业网关人机界面、国产化信创终端GUI程序、车载/安防类嵌入式HMI系统。本文聚焦Qt 5.

weixin_29169505的博客 250

itop-3568 开发板文件系统构建学习笔记(8)Buildroot 添加 Qt

《【北京迅为】itop-3568 开发板文件系统构建手册v1.0.pdf》学习笔记

Super辉sir的博客 2321

嵌入式屏幕选型:Linux与安卓在启动、稳定、成本上的硬核对比

嵌入式显示系统选型本质是实时性、可靠性与成本的三角权衡。Linux凭借精简启动链路、内核态DRM/KMS驱动和确定性调度,实现毫秒级冷启动(<1.3s)与7×24小时零GC抖动运行,适用于工业HMI、医疗监护、车载终端等对确定性有硬约束的场景;安卓则依托成熟HAL层、Google生态和多媒体中间件,在需深度集成Play Services或高频交互/4K解码的消费类设备中具备不可替代优势。二者差异核心在于架构哲学:Linux追求可预测性与资源可控,安卓侧重生态兼容与功能弹性。本文基于17个量产项目实测数据,量

weixin_34417183的博客 243

嵌入式Linux屏与安卓屏选型实战:开机时间、稳定性、TCO三维决策法

嵌入式显示系统选型本质是确定性与可靠性的工程权衡。嵌入式Linux凭借精简启动链路(U-Boot→内核→轻量GUI)、严格隔离的软硬件边界和可预测的实时行为,在工业HMI、车载中控、数字标牌等场景中展现出显著优势;而安卓虽具备成熟应用生态与丰富UI能力,但其Java虚拟机、Binder IPC、动态服务调度等机制天然引入非确定性延迟与故障扩散风险。真正影响产品成败的并非SoC参数,而是开机时间标准差、OTA失败率、三年总拥有成本(TCO)等可量化指标。本文基于27个真实产线项目数据,聚焦嵌入式Linux屏与

weixin_34344403的博客 4711

qt5.15.8在RK3326下打包过程

【代码】qt5.15.8在RK3326下打包过程。

qq_27050303的博客 548

安装和测试成功的QT交叉编译

为了进行QT的交叉编译,我们需要安装一些必要的工具和库。请注意,将"版本号"替换为您实际安装的QT版本号,并将"交叉编译工具链路径"替换为您的交叉编译工具链的路径。请注意,将"版本号"替换为您实际安装的QT版本号,并将"交叉编译工具链路径"替换为您的交叉编译工具链的路径。",那么恭喜您,QT交叉编译安装和测试成功了!同样,将"版本号"替换为您的QT版本号,并将"交叉编译工具链路径"替换为您的交叉编译工具链路径。同样,将"版本号"替换为您的QT版本号,并将"交叉编译工具链路径"替换为您的交叉编译工具链路径。

FuJavascript的博客 275

Qt5.14.2 aarch64静态交叉编译实战指南

Qt静态编译是嵌入式Linux图形应用部署的核心技术,其本质是将Qt库与应用程序链接为单个可执行文件,彻底规避动态依赖缺失、版本冲突和模块未启用等运行时错误。该技术基于交叉编译原理,需严格匹配目标平台架构(如aarch64)、工具链ABI及LTS版本(如Qt5.14.2)的稳定性要求,在工业控制、数据采集终端等资源受限场景中具备不可替代的技术价值。典型应用包括串口通信(QSerialPort)、实时图表(Qt Charts)和WebSocket远程监控,而本文聚焦于从源码构建完整静态Qt环境的工程化落地路径

weixin_29188997的博客 207

Qt农业上位机:边缘自治型农田监控终端设计

农业物联网中的上位机系统,本质是面向严苛物理环境的嵌入式控制终端,其核心在于边缘侧实时感知、本地决策与离线自治能力。不同于通用桌面应用,它需在宽温、高湿、弱网、电压波动等硬约束下实现7×24小时稳定运行,技术关键涵盖Qt跨平台部署、低延迟串口通信协议栈、硬件级流控、MQTT/HTTP/SQLite三级数据通道及本地规则引擎。尤其在无稳定5G信号的山地农田场景中,Qt凭借零依赖二进制、ARM/x86无缝迁移、无GC实时响应等特性,成为替代Web或C#方案的工业级选择。本文聚焦Qt在真实农业现场的工程落地——从

weixin_28685287的博客 258

麦当劳app之sign逆向分析

摘要:本文分析了麦当劳APP请求参数sign的逆向过程。通过抓包发现32位sign参数疑似MD5加密,使用frida-trace工具跟踪CC_MD5函数验证其为标准MD5算法。加密参数包含时间戳、token、版本号等固定和动态字段,拼接后经MD5加密生成sign。文章提供了JS和Python两种实现方案,包含完整的请求头参数和加密逻辑,最终成功获取API响应数据。该研究仅用于逆向技术学习,展示了移动应用常见加密参数的逆向分析方法。

佛系更新... 2421

RDKX5开发板实战指南:arm64交叉编译与真机调试全流程

arm64架构是当前国产嵌入式芯片(如RK3566、RK3568)的核心指令集,其与x86_64的ABI不兼容,决定了必须采用宿主-目标分离的交叉编译开发模式。该模式依赖aarch64-linux-gnu工具链实现代码构建,并通过串口调试、NFS挂载、远程GDB等技术保障开发效率。相比QEMU模拟,真机调试才能覆盖专有IP核(如RKNN NPU、VOP显示控制器)和四级启动流程,是工业网关、边缘AI等落地场景的工程刚需。本文以RDKX5为典型载体,系统梳理从开箱烧录、设备树修改到Docker容器部署的完整链

weixin_33805743的博客 452

实战案例四:Claude Code + Excel 技能处理表格数据

Excel 是商业世界中最通用的数据工具。无论是财务报表、销售数据还是项目计划,Excel 无处不在。本案例将展示如何利用 Claude Code 的 Excel 技能,自动化处理复杂的表格数据,告别繁琐的手工操作。

gaoxiang_120的专栏 469

嵌入式Linux屏与安卓屏选型决策指南:实时性、交互复杂度与运维成本三维权衡

嵌入式显示终端的屏幕选型本质是操作系统级架构决策,核心围绕实时性响应能力、人机交互复杂度和全生命周期运维成本三大技术维度展开。Linux系统凭借确定性调度、精简内核和可裁剪性,在工业控制、医疗设备等强实时场景中具备天然优势;安卓则依托成熟GUI框架、丰富多媒体中间件及海量第三方SDK生态,成为教育平板、智能广告机等高交互需求产品的首选。二者并非性能优劣之分,而是软硬协同、生态适配与工程落地的综合权衡。本文聚焦嵌入式Linux屏和安卓屏在开机时间优化、稳定性保障机制及真实成本结构(含开发、认证、OTA运维)等

weixin_33851604的博客 395

基于Python的彩票数据爬虫:数据抓取与趋势分析

爬虫是一种用于从互联网上自动抓取信息的程序。在抓取彩票数据时,我们首先需要确定目标网站并获取其网页内容,接着提取彩票的开奖结果信息并保存。彩票数据通常是以HTML表格或列表的形式展示,爬虫可以利用Python的requests和来抓取静态网页,或使用Selenium来抓取动态页面。在本篇博客中,我们深入探讨了如何使用Python编写彩票数据爬虫,抓取并分析彩票开奖结果。通过Python爬虫技术,结合数据分析与可视化工具,我们能够全面分析历史开奖数据,揭示彩票号码的频率分布、趋势变化以及未来的可能走势。

2201_76125261的博客 1933

数据挖掘实战-基于长短期记忆网络(LSTM)的黄金价格预测模型 | 97% 准确度

本实验基于Kaggle上提供的从2013年到2023年的黄金价格数据集,运用长短期记忆网络(LSTM)构建了黄金价格预测模型。该数据集详细记录了每日的黄金价格信息,包括开盘价、收盘价、高点、低点和交易量等,为模型的训练提供了丰富的数据支持。

m0_64336780的博客 1万+

嵌入式屏选型核心指标:开机时间、稳定性与隐性成本

嵌入式Linux与安卓系统选型,本质是硬件启动时序、故障收敛机制和工程成本的综合权衡。开机时间并非单纯OS性能问题,而是BootROM执行、eMMC初始化、DDR唤醒等硬件链路的确定性结果;稳定性也不等于‘不死机’,关键在于WDOG硬复位能力、init进程原子性及跨层故障隔离设计;而所谓‘BOM更便宜’常掩盖eMMC兼容性验证、vendor blob依赖、SELinux策略开发等隐性成本。本文聚焦嵌入式屏在工业HMI、医疗监护、车载终端等场景下的真实约束,解析BootROM耗时占比、init进程模型差异、O

weixin_33797791的博客 312

杰理AC695N芯片跑iic接口的oled驱动分享

本文介绍了一个基于IIC接口的0.96寸OLED显示屏驱动程序,适用于SSD1306控制器。驱动采用软件模拟IIC方式,支持字符、数字、字符串、汉字和图片显示,测试平台为杰理AC695N系列芯片。硬件参数包括128×64分辨率,IIC接口(地址0x78),使用IO_PORTA_02(SDA)和IO_PORTA_03(SCL)引脚。驱动包含OLED主文件(oled.c/h)、软件IIC实现(soft_iic.c/h)和字体/图片数据文件(oledfont.h/bmp.h),可通过修改soft_iic.h中的引

qq_42014563的博客 875

嵌入式WebRTC库:轻量C++实现,专为ARM/Linux物联网设备优化

WebRTC是一种支持浏览器间实时音视频通信的开放协议,其核心原理涵盖ICE连接建立、DTLS-SRTP加密传输、RTP/RTCP媒体流控制及SDP信令协商。在资源受限的嵌入式场景中,传统libwebrtc因体积庞大、依赖繁重、内存占用高而难以落地。WebRTC-IOT通过零堆内存可选、协议分层解耦、硬件直通接口等关键技术,显著提升实时性与部署可行性,适用于工业网关、智能门锁、车载终端等边缘设备。本文聚焦面向ARM/Linux平台的轻量C++ WebRTC实现,深入解析其在物联网边缘侧的工程化实践路径。

weixin_34204722的博客 281

域适应分类:MCD论文笔记——Maximum Classifier Discrepancy for Unsupervised Domain Adaptation

域适应分类:MCD论文笔记——Maximum Classifier Discrepancy for Unsupervised Domain Adaptation

qq_50001789的博客 1001

(3dnr)多帧视频图像去噪 (一)

视频图像去噪主要利用相邻帧间内容相似性,通过时域帧平均降低随机噪声。为避免运动物体产生"拖尾"现象,可采用运动自适应或运动补偿时域滤波方法。前者根据运动强度动态调整滤波系数,后者通过运动补偿使参考帧更接近当前帧。运动补偿方法虽能更好处理运动区域,但计算复杂度高且对快速运动场景效果有限。相比之下,运动自适应方法在实时视频处理中更具优势,能平衡去噪效果与硬件资源消耗。两种方法可根据场景动态切换以获得最佳去噪效果。

大熊 1860

RK3326 8.1系统定制化通用修改

记录下常用修改,持续更新中......

我的斌斌的专栏 5054

2023华为od机试C卷【启动多任务排序】C++ 实现

一个应用启动时,会有多个初始化任务需要执行,并且任务之间有依赖关系,例如A任务依赖B任务,那么必须在B任务执行完成之后,才能开始执行A任务。现在给出多条任务依赖关系的规则,请输入任务的顺序执行序列,规则采用贪婪策略,即一个任务如果没有依赖的任务,则立刻开始执行,如果同时有多个任务要执行,则根据任务名称字母顺序排序。

MISAYAONE的博客 871

Linux开发板RK3566-Buildroot移植Qt5详细步骤【保姆级】

Buildroot 是一个用于嵌入式 Linux 系统的工具,它可以帮助你构建定制化的 Linux 系统镜像。Buildroot 支持集成 Qt5 到你的嵌入式 Linux 系统中,并且可以帮助你构建包含 Qt5 应用程序的根文件系统。

honmy18的博客 9604

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Buildroot 添加 Qt 支持

buildroot 添加 Qt 相关支持

OnlyLove_的博客 6479

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

上一篇: Qt交叉编译
下一篇: qt5.15.8在RK3326下打包过程
_探索_
博客等级 码龄12年 37粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值