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

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

 得出结论是在烧录自己的代码时它不知道使用什么窗口系统,所以就报错去烧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应用程序的选项。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是在 Ubuntu 18.04 操作系统下,使用 gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf 交叉编译 Qt 5.6.2 的流程: 1. 下载 gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf 工具链,并解压到某个目录下。 2. 安装 Qt 5.6.2 的依赖库: ``` sudo apt-get update sudo apt-get install build-essential perl python git sudo apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libx11-xcb-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-xinerama0-dev libxcb-xkb-dev libxslt1-dev libgl1-mesa-dev libglu1-mesa-dev libsqlite3-dev libmysqlclient-dev libpq-dev libiodbc2-dev libasound2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libxrandr-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-ugly1.0-dev gstreamer1.0-libav gstreamer1.0-alsa gstreamer1.0-pulseaudio libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-ugly1.0-dev ``` 3. 下载 Qt 5.6.2 的源代码,并解压到某个目录下。 4. 进入 Qt 5.6.2 的源代码目录,执行以下命令: ``` ./configure -release -opengl es2 -device linux-rasp-pi2-g++ -device-option CROSS_COMPILE=/path/to/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -sysroot /path/to/sysroot -opensource -confirm-license -make libs -prefix /usr/local/qt5arm -no-xcb -no-pch -no-icu -no-gif -no-libjpeg -no-libpng -no-harfbuzz -no-openssl -no-qml-debug -nomake examples -nomake tests ``` 其中,/path/to/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf 是 gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf 工具链的路径,/path/to/sysroot 是交叉编译环境的根文件系统路径。 5. 执行 make 命令进行编译: ``` make -j4 ``` 其中,-j4 表示使用 4 个线程进行编译。 6. 执行 make install 命令进行安装: ``` sudo make install ``` 7. 完成后,在 /usr/local/qt5arm 目录下会生成 Qt 5.6.2 的安装文件。把该目录添加到交叉编译环境的 PATH 环境变量中即可使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

优雅人字拖

老板大气

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值