在没有 X 的 Linux 上编译 Qt 应用程序

Posted

技术标签:

【中文标题】在没有 X 的 Linux 上编译 Qt 应用程序【英文标题】:Compiling Qt application on Linux without X 【发布时间】:2015-10-11 21:09:11 【问题描述】:

在一家公司中,我们有一个开发人员服务器,其中包含所有编码所需的东西。其中,有一个 Jenkins CI 工具已安装并正在运行。

现在我想将其配置为能够构建 Qt5.5 应用程序。问题是服务器上没有 X11 - 只有控制台访问。

是否可以在这样的平台上构建 Qt 应用程序?由于缺少 GUI,我什至无法安装 Qt5.5 框架。但也许我可以以某种方式只安装所需的库和 qmake?

【问题讨论】:

每个linux发行版都有一个命令行工具来安装软件,然后你可以安装qt5并编译你的软件 【参考方案1】:

是的,可以(引用您的问题)“在这样的平台上构建 Qt 应用程序”、“仅安装所需的库和 qmake”。

安装库不会拖累完整的 GUI 环境 - 否则您的发行版的包依赖系统存在严重缺陷。

如果您希望能够在没有 GUI 的平台上运行 Qt 应用程序(而不是“仅用于 jenkins 构建”),那么您没有说明并且重要的是。

如果是这种情况,这仍然是可能的,只安装 Qt 核心:您将获得 Qt 对象框架的所有好处,而无需 GUI 部分。这将是一个完全可行且合法的 Qt 控制台应用程序。

你没有告诉我们这台机器上安装了什么发行版,但例如在我的 Debian 上,这是 libqt5core5a - Qt 5 core module 包:

$ apt-cache show libqt5core5a

...

取决于:libc6 (>= 2.15)、libgcc1 (>= 1:4.1.1)、libglib2.0-0 (>= 2.22.0), libicu55 (>= 55.1-1~), libpcre16-3, libstdc++6 (>= 4.9), zlib1g (>= 1:1.1.4)

...

Description-zh: Qt 5 核心模块 Qt 是一个跨平台的 C++ 应用程序框架。 Qt 的主要特性是其丰富的小部件集,可提供标准的 GUI 功能。

QtCore 模块包含核心的非 GUI 功能。

...

如你所见:

这与 GUI 无关。

这仅包含核心的非 GUI 功能。

【讨论】:

感谢@jbm,明确一点:我的开发服务器在 Centos 6 上运行。没有安装 X 服务器,我不想运行我的 Qt 应用程序,只编译它(qmake;全部制作;)。但我需要编译所有图形的东西,完整的应用程序。在 Centos 存储库中,我们有相当古老的 qt 软件包。是否可以通过控制台模式从官网包中安装最新的Qt5.5而不需要安装X server? "在 Centos 存储库中,我们有相当旧的 qt 包......是否可以在控制台模式下从官网包安装最新的 Qt5.5?"我不知道。但似乎这里的根本问题是,与您的应用程序需求相比,您的发行版太旧了:至少,这个 jenkins 服务器应该能够像开发人员在他的工作站上所做的那样构建您的应用程序。如果不是这样,你就有问题了:这个 jenkins 上的构建环境不代表你的开发站。这不好,而且一开始就与詹金斯的目标相矛盾。 “这个 jenkins 服务器应该能够像开发人员在他的工作站上那样构建您的应用程序”,我的意思是使用开发人员所拥有的 exact 相同的库他的车站。否则,詹金斯“构建成功/构建失败”报告的价值是什么?

以上是关于在没有 X 的 Linux 上编译 Qt 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

在 x86_64 linux 机器上编译 gentoo-bionic

使用 Qt 时,我是不是必须在特定操作系统上编译特定操作系统?

在 Raspberry 上编译 Qt5 应用程序

如何在 Qt5 上编译 QtWebKit?

在 Qt 5.4 上编译 QXmpp 库时出错

Linux CentOS 7.x 上编译并安装 Clang