在OS X和Linux上部署QT应用程序

时间:2010-01-30 02:35:22

标签: qt deployment static-libraries dynamic-linking

部署QT应用程序的最佳方式是什么?我已经阅读了trolltech上托管的文档,但最好是链接静态库还是动态库并让用户安装框架?我真的不希望任何人使用我的应用程序来下载160mb框架只是为了运行一个简单的gui前端。

3 个答案:

答案 0 :(得分:3)

在OS X上,这是一个很好的方法来进行动态构建,并使用macdeployqt工具对生成的“.app”进行后期处理,该工具从4.5开始的Qt附带。

这会将应用程序使用的Qt框架复制到应用程序包中,从而产生比构建应用程序静态版本更大的包。

您可以采取以下措施来确保在动态构建中获得最小的文件大小:

  • 首先,请确保您只包含所需的内容(在project.pro文件的QT += core gui network xml行中)。
  • 打开应用程序包并从捆绑包中删除任何不需要的“Qt插件”。 macdeployqt自动编译所有 Qt插件,这可能有点笨重。
  • 确保以发布模式构建应用程序。否则,您的应用程序可能会链接到Qt4框架的调试库,并且它们真的大(例如,调试库的大小超过90 MB,而对于16 MB没有调试符号的版本变体)。这可能就是你的情况。
  • 如果您有大型应用程序二进制文件,则可以使用UPX将可执行文件压缩40-50%。

除此之外,您应该使用压缩磁盘映像来部署您的应用程序。

我的一个项目使用 QtGui QtNetwork QtCore QtXml ,结果捆绑大约是16 MB大小。

希望有所帮助。

答案 1 :(得分:2)

在Linux上,最好依靠操作系统的Qt副本,因为它几乎可以肯定安装 - 对于OS X,几乎所有的应用程序都使用静态编译的库。

答案 2 :(得分:2)

不幸的是,您必须将所需的Qt库包含在您自己的软件包中,因为您不能指望您的用户在Mac上安装Qt(而在Linux打包系统上允许您至少需要一个给定版本的Qt。< / p>

有一个很好的工具可以帮助你,这就是所谓的macdeployqt。您只需要在捆绑应用程序上调用它,它将打包所需的库,更改二进制文件的链接以引用它们。没有它,为Mac制作捆绑包真的很痛苦(尽管如此,但仍然相当少)。

http://doc.trolltech.com/4.6/deployment-mac.html#the-mac-deployment-tool

之后,您可以制作.dmg图像,就像使用任何其他应用程序一样。 macdeployqt中有一个选项可以构建一个基本的选项。