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

news/2024/12/2 21:52:42/

 

目录

一、交叉编译

二、操作中踩过的坑

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.ppmy.cn/news/78583.html

相关文章

请问你如何理解以下的歌词“unravel - TK from 凛冽时雨 (TK from 凛として時雨)为什么很多人说崖山海战以后无中国

目录 请问你如何理解以下的歌词“unravel - TK from 凛冽时雨 (TK from 凛として時雨) 为什么很多人说崖山海战以后无中国 请问你如何理解以下的歌词“unravel - TK from 凛冽时雨 (TK from 凛として時雨) 以下是我对《unravel - TK from 凛冽时雨》这首歌词的理解&#xff1…

Selenium + Java 的环境搭建

Selenium Java 的环境搭建 🔎Chrome 浏览器下载 Chrome 浏览器检查对应版本下载 Chrome 浏览器驱动 🔎配置环境变量🔎验证环境是否搭建成功🔎关于 pom.xml 出现错误的解决方案 🔎Chrome 浏览器 下载 Chrome 浏览器 下…

光敏晶体管(ALS-PT19-315C/L177/TR8) 光照度和电压,电流关系分析.

背景 当我们使用光敏晶体管进行,测算光照度时,大多使用ADC电路测到电压. 那么怎么根据这个电压计算出对应具体的光照度呢? 下面将以 ALS-PT19-315C/L177/TR8 型号的 光敏晶体管为例,来进行分析介绍,并给出 如何根据最大光照度范围 选定合适的电阻和电容. 1,直接看数据手册给…

云服务器使用jenkins+docker自动化部署SpringBoot项目

docker 安装jenkins,就这一步都恶心死了 //拉取镜像,踩了很多坑,用其它版本的镜像插件一直安装失败,最后用的是lts版本(基础版) 用其它版本要么是连不上插件的下载地址,要么是插件下载不成功 d…

C语言指针初级

目录 一、什么是指针 二、指针和指针类型 三、野指针 1.野指针的成因: 2.如何规避野指针 四、指针运算 1.指针-整数 2. 指针之间的加减 五、二级指针 六、指针数组 一个男人,到底要走多少的路,才能成为一个真正的男人 本专栏适用于…

Delphi中根据分类数据生成树形结构的最优方法

一、 引言: TreeView控件适合于表示具有多层次关系的数据。它以简洁的界面,表现形式清晰、形象,操作简单而深受用户喜爱。而且用它可以实现ListView、ListBox所无法实现的很多功能,因而受到广大程序员的青睐。 树形结构在…

Operators

Operators DataStream Transformations # DataStream 程序 在Flink里是一个常规操作,对数据流进行转换(mapping, filtering, reducing) Functions 转换接收用户定义的函数作为输入, 以定义转换的功能 Implementing Function Interfaces # 不同的函数接口用于不同的转换在…

微信外h5跳转小程序3中方式

1.转短链接跳转小程序(支持微信内外) 目前限制50wc次 微信h5浏览器环境内打开app:目录 | 微信开放文档 微信小程序内跳转app:打开 App | 微信开放文档 先转短链接 文档:获取scheme码 | 微信开放文档 2.微信公众号h5内跳转小程…