我在 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 Linux和 Deploying 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 上更容易,因此更容易编写自动化体验的安装工具。
要解决您的问题,有几种方法:
- 告知用户您的程序需要某个版本的Qt或更高版本,让用户处理问题
- 了解如何为您想要定位的每个发行版创建包并创建特定包
- 使用 0Install 或 Elf Statifier 等程序创建包含所有必要库的程序包/可执行文件。
后者类似于许多 Windows 和 Mac 程序所做的事情(它们在安装程序中包含了它们需要的每个库),但它不是 Linux 上的首选方式,因为 Linux 严重依赖共享库。
关于linux - 在 Linux 上部署 Qt 应用程序二进制文件,与 LSB 兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11344934/