linux - 在 Linux 上部署 Qt 应用程序二进制文件,与 LSB 兼容

标签 linux qt

我在 Ubuntu 12.04 上的 Qt Creator 中开发了一个小应用程序,我希望它可以在任何其他 Linux 发行版(主要是 CentOS 和 ubuntu 的不同版本)上运行,就像 Windows 上的任何可移植应用程序一样。

我希望能够简单地共享应用程序的二进制文件,并运行该应用程序。 我能够在 Windows 中成功地做到这一点,只需在 QT Creator 中构建项目,然后将所需的库放在应用程序目录中,然后将它们传输到其他 Windows 系统。

我搜索了一遍,发现我应该尝试使用 LSB(Linux Standard Base)兼容性构建项目,以便它在其他 Linux 发行版上运行。这是执行此操作的正确方法吗?

我是 Qt 和 Linux 的新手(不太了解 Shell 脚本)。 因此,我不知道应该如何着手使应用程序符合 LSB。

我已经引用了以下链接: Distributing Qt-based binaries on LinuxDeploying Qt applications on Linux但无法理解我应该做什么。

我还找到了this question here和我的情况很相似,但是因为我是新手,所以我不知道我应该怎么做。

此外,考虑到前两篇文章写于 6 年前,现在是否应该有更简单的方法在 linux 平台上部署 Qt 应用程序? 我还看到了一些关于静态链接的内容,这是要走的路吗? 难道没有一种方法可以通过 Qt Creator 本身完成所有这些工作吗?

如果没有希望为 Linux 创建一个可移植的 Qt 应用程序,那么有没有办法,比如 shell 脚本或将在另一台计算机上编译 Qt 项目并运行它所需的所有步骤结合起来的东西。比如说,如果不存在,请下载 Qt-SDK,运行 qmake 和 make,然后运行新编译的应用程序(如果不存在),这样用户只需运行一个脚本即可运行该程序。

最佳答案

您的问题不是 Linux Standard Base,而是您需要的特定 Qt 版本(或更高版本)是否存在。

就像在 Windows 机器上一样,用户可能安装了任何 Qt,也可能根本没有。在 Windows 上检查是否存在特定版本的 Qt 比在 Linux 上更容易,因此更容易编写自动化体验的安装工具。

要解决您的问题,有几种方法:

  1. 告知用户您的程序需要某个版本的Qt或更高版本,让用户处理问题
  2. 了解如何为您想要定位的每个发行版创建包并创建特定包
  3. 使用 0Install 或 Elf Statifier 等程序创建包含所有必要库的程序包/可执行文件。

后者类似于许多 Windows 和 Mac 程序所做的事情(它们在安装程序中包含了它们需要的每个库),但它不是 Linux 上的首选方式,因为 Linux 严重依赖共享库。

关于linux - 在 Linux 上部署 Qt 应用程序二进制文件,与 LSB 兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11344934/

相关文章:

linux - 我只想从控制文件中获取计数

linux - 为用户创建主目录

c++ - Qt Creator如何重新定义getter和setter函数的创建方式?

qt - PostgreSQL 和 QSqlQuery.bindValue() 很慢

linux - 尝试将序列号读入变量以与序列号列表进行比较以重命名机器

c - 通过 pthread 库的内存可见性?

c++ - GCC 中的模板实例化与 Visual C++ 不同

c++ - QT中使用Botan C++加密文件

c++ - QT退出不调用MainWindow析构函数

c++ - osx : external program (qprocess) crash if parent run with open, 但如果父级直接运行则工作正常