目录
一、交叉编译
二、操作中踩过的坑
1、环境变量未生效
2、交叉编译QT代码操作
3、烧录时报错缺少xcb问题
4、小白的细小错误
三、--platform命令
3、1 -platform linuxfb
详细文档请点击此处 我的文档在原文档的基础上添加了非常详细的提醒,可以少走弯路
github也有,GitHub - aaron201912/Qt5.15_example: Qt5.15 examples for testing.
一、交叉编译
二、操作中踩过的坑
1、环境变量未生效
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应用程序的选项。