减小Qt GUI应用程序的大小

15

我正在学习使用Qt Creator开发应用程序。我已经在Windows下构建了一个简单的应用程序,依赖于使用mingwm10.dll、QtCore4.dll、QtGui4.dll和QtNetwork4.dll。 关于QtGui4.dll,我只使用了其中的几个小部件,并不需要全部内容... 是否有可能缩小QtGui4.dll的大小或者采取其他措施来减少应用程序的部署大小? 静态链接呢?它会嵌入整个dll还是只有使用的部分? 此外,对于Qt,是否可以将一些dll静态链接,而将另一些动态链接?

3个回答

13

通过删除一些函数无法缩小QtGui4.dll的大小。Trolltech正在研究此问题,但是好的解决方案似乎还很遥远:

我认为,在Windows上静态链接非常棘手。每次尝试都是噩梦。

因此,看起来你只能使用常规DLL。你可以做的唯一一件事(我为我的Qt应用程序所做的)是:

  • 使用UPX压缩你的DLL

或者

  • 在你的安装程序中使用强压缩

如果你已经使用UPX压缩了dll,则不能使用安装程序压缩进一步减小其大小,但这可以减小其他文件的大小。


2
是的,"UPX -9 QtGui4.dll" 是正确的选择 :) - corné
有趣的提示,我以前从未使用过UPX。 - PowerApp101
谢谢!您能通过这种方式实现的GUI Qt应用程序的最小占用空间是多少? - Dmitri Pisarev
我认为可以删除一些不需要的功能。请参见Hatchet - Trilarion

7
最好的方法是使用configure手动配置Qt库。通过执行:
configure --help

您会看到一些选项,可以帮助减少磁盘和内存占用。例如:

--no-stl
--no-exceptions

可以同时减小应用程序的占用空间。您还可以修改mkspec,为编译器使用更激进的优化标志。


2
如果你静态链接,最终会得到一个1.5GB的可执行文件,并且会牺牲一些插件等功能。因此,除非你不想分发dlls,否则这并不值得。但是,你可以尝试Henrik的建议,并排除Webkit,这可能是代码中最大的部分。

在原始问题的情况下,排除WebKit并没有任何区别,因为他没有使用它(仅使用了Core、Gui、Network模块)。 - Ariya Hidayat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接