[英]Deploy a Qt Application Binary on Linux, compatible with LSB
我已经在Ubuntu 12.04上的Qt Creator中开发了一个小型应用程序,希望它可以在其他任何Linux发行版(大多数版本的CentOS和ubuntu)上运行,就像Windows上的任何便携式应用程序一样。
我希望能够简单地共享应用程序的二进制文件,然后运行该应用程序。 通过在QT Creator中构建项目,然后将所需的库放在Application目录中,然后将它们转移到其他Windows系统中,我能够在Windows中成功完成此操作。
我到处搜索,发现我应该尝试使用LSB(Linux标准库)兼容性来构建该项目,以便它可以在其他Linux发行版上运行。 这是正确的方法吗?
我对Qt和Linux都是新手(对Shell脚本了解不多)。 因此,我不知道如何继续使该应用程序LSB兼容。
我已经参考了以下链接: 在Linux上分发基于Qt的二进制文件和在Linux上 部署Qt应用程序,但是还无法理解我的工作。
我还在这里发现了一个与我的情况非常相似的问题,但是由于我是新手,所以我不知道该怎么做。
而且,考虑到前两篇文章是6年前写的,难道现在不应该有一种更简单的方法来在Linux平台上部署Qt应用程序吗? 我还看到了一些有关静态链接的东西,这是可行的方法吗? 是否没有办法可以通过Qt Creator本身完成所有这些工作?
如果没有希望为Linux创建一个可移植的Qt应用程序,那么有一种方法,例如说一个shell脚本或某种可以组合在另一台计算机上编译Qt项目并运行它的步骤。 比如说,下载Qt-SDK(如果不存在的话),运行qmake和make,然后运行新编译的应用程序(如果还没有的话),以便用户可以仅通过运行一个脚本来运行该程序。
实际上,使二进制应用程序与任何其他 Linux发行版兼容几乎是不可能的,因为您永远不会事先知道发行版X中可用的库或该库的哪个版本。 即使在单个发行版(例如Ubuntu)中,二进制应用程序也几乎永远不会向后兼容,因为在Ubuntu 12.04上构建的任何东西都将依赖于该Ubuntu版本上安装的版本库,并且尝试在Ubuntu 10.04上运行该二进制文件将最有可能失败的原因仅仅是因为它没有最新版本的glibc或其他一些必要的库。
但是,如果您将自己限制在发行版的有限列表和发行版中,则该想法可能更加可行。 然后,您可以知道哪些库可用于这些发行版,并以最低的公分母为目标。 我曾经维护过一个二进制应用程序,该应用程序必须支持多个发行版(Ubuntu,Fedora,OpenSUSE,SLED,Mandriva),而我要做的方式是在构建机器上安装我所针对的最旧发行版。 这样,二进制应用程序将链接到这些发行版上可用的最旧版本的库。 除非有这样一个库的新主版本(这种情况很少发生,即使如此,发行版通常也会出于兼容性目的而分发以前的主版本一段时间),然后编译的二进制文件才能与所有目标发行版兼容。
因此,针对您的情况,我将给出一个简短的建议,使用仍受支持的最旧的LTS版本的Ubuntu(目前为10.04)进行开发,对于最近流行的发行版,您应该是相当安全的。 对于已经在Ubuntu 12.04上开发的应用程序,只要在10.04上重新编译相同的源代码,就应该没有问题。 请理解,您将永远无法与已编译的C ++ Qt应用程序实现100%的兼容性。
如果Qt对您而言并不那么重要,则可以使用更高级别或解释性的语言,例如Python,Java,Perl或Ruby。 使用此类语言,通常可以指望目标发行版中已安装的语言实现。
您的问题不是Linux Standard Base,而是您是否需要特定版本的Qt(或更高版本)。
就像在Windows计算机上一样,用户可能安装了任何Qt,或者根本没有安装。 在Windows上,比在Linux上检查某个版本的Qt的存在要容易得多,因此编写使体验自动进行的安装工具更加容易。
要解决您的问题,有几种方法:
后者类似于许多Windows和Mac程序所做的工作(它们包括安装程序中所需的每个库),但这不是Linux上的首选方法,后者在很大程度上依赖于共享库。
在Linux中部署应用程序是一场噩梦,幸运的是,这里有一些解决方案。 检查以下项目以构建将所有依赖项捆绑在一起的可移植二进制文件:
http://statifier.sourceforge.net/statifier/main.html
http://www.magicermine.com/index.html
http://www.pgbovine.net/cde.html
另一个解决方案是制作便携式0install软件包:
我推荐这种解决方案。 就我个人而言,最初的三个打包程序都存在问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.