在 Linux ARM 上编译不支持 GUI 的 Qt5

Posted

技术标签:

【中文标题】在 Linux ARM 上编译不支持 GUI 的 Qt5【英文标题】:Compile Qt5 without GUI support on Linux ARM 【发布时间】:2014-06-17 13:18:47 【问题描述】:

由于 OpenGL 依赖项(即 OpenGL ES2),我无法在没有 GUI 元素的情况下在我的 Cortex-A9 板上运行 Qt5。我正在运行 Ubuntu 14.04 rootfs。

有什么方法可以从 git 存储库开始禁用 GUI 类的生成? (目标版本 5.3)。 我需要的唯一模块是 QtCore、QtXML 和 QtWebSockets/QtNetwork

【问题讨论】:

【参考方案1】:

以下似乎让 Qt5 使用 LinuxFB 驱动程序而不是 OpenGL 进行编译。

./configure -qpa linuxfb -no-largefile -opensource -verbose -release \ -无可访问性-确认-许可-无-sse-无-sse2 \ -qt-zlib -qt-libpng -nomake 示例 -nomake 演示 -nomake 文档 -nomake 测试 \ -make libs --prefix=/usr -no-pch -no-iconv -no-nis -no-xkb -no-xshape \ -no-xvideo -no-xsync -no-xinerama -no-xcursor -no-xfixes -no-xrandr -no-kms \ -no-directfb -no-eglfs -no-xcb -no-dbus -no-icu -no-cups -no-gif \ -no-accessibility -no-opengl -nomake quick -make quick1 \ -skip 多媒体 -skip webkit -nomake webkit -no-pkg-config \ -no-sql-db2 -no-sql-ibase -no-sql-mysql -no-sql-oci \ -no-sql-odbc -no-sql-psql -no-sql-sqlite -no-sql-sqlite2 \ -no-sql-sqlite_symbian -no-sql-tds -nomake 工具 \ -device linux-custom-g++ -device-option CROSS_COMPILE=$TGT_TOOL_NAME-

关键是,-no-opengl-nomake quick。 QtQuick2 将拉入 OpenGL。

另外看来我必须做以下事情,

touch module_qtwebkit-make_first

这会阻止构建系统尝试制作 QtWebKit;它似乎有问题。这仍然有 GUI 类,但不要链接到它们。那是在普通的make 之前。对于安装目标,

touch module_qtwebkit-install_subtargets

是必需的。以后的 Qt5 版本可能已经修复了 QtWebkit 构建问题。

【讨论】:

linux-custom-g++只是一个QPA/QMAKE配置文件,用于设置自定义编译路径等 较新的版本对非 GPU 系统有更好的支持。我认为是 5.10,但绝对是 5.12+。这篇文章是针对 qt5.2 的。【参考方案2】:

看来至少Qt 5.6.2支持-no-gui-no-widgets配置选项。

【讨论】:

感谢您的加入。这个问题真的很老了,也许他们现在比 2014 年添加了更多的选项,但我还没有测试过它们,我也没有测试的硬件平台了 是的,我自己在谷歌上搜索同样的东西时没有找到任何合适的文档:)【参考方案3】:

Ubuntu 团队自己宣布 Qt5.3。仍在对 armhf 平台进行调查,并且可能从 14.10 版本开始提供。 不知何故,在Qt论坛上爬,在没有OpenGL/GUI模块的情况下,缺少依赖和编译错误。

我解决了它从存储库安装 1t 5.2.1,然后从 git 存储库安装缺少的 QWebSocket 模块。

为了使这个模块与旧的 Qt 版本兼容,文件 .qmake.conf:

MODULE_VERSION = 5.3.2 --> to desired one (i.e. 5.2.1)

【讨论】:

以上是关于在 Linux ARM 上编译不支持 GUI 的 Qt5的主要内容,如果未能解决你的问题,请参考以下文章

在ubuntu15.10上编译arm-linux环境使用的log4c步骤

在 64 位 Arm 上编译和安装 Chez 方案?

arm64linux无法使用数据库

ffmpeg neon 在 android 上编译 - 汇编错误

arm-linux-gcc交叉编译器的制作,以及版本选择问题。

在 Arm 板上编译的 makefile 编译错误