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

 

目录

一、交叉编译

二、操作中踩过的坑

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

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

QT5.15.0使用gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf交叉编译的问题总结_第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应用程序的选项。

你可能感兴趣的:(QT环境配置,linux,arm开发,运维)