减小 Qt GUI 应用程序的大小

Posted

技术标签:

【中文标题】减小 Qt GUI 应用程序的大小【英文标题】:Decrease Qt GUI application size 【发布时间】:2009-05-22 08:58:47 【问题描述】:

我正在学习使用 Qt Creator 开发应用程序。我在 Windows 下构建了一个简单的应用程序,依赖于使用 mingwm10.dll、QtCore4.dll、QtGui4.dll、QtNetwork4.dll。 在 QtQui4.dll 中,我只使用了几个小部件,其余的都不需要……是否可以缩小 QtGui4.dll 的大小或做其他事情来减少应用程序的部署大小? 静态链接呢?它会嵌入整个 dll,还是只嵌入其中的一部分? Qt是否可以静态链接一些dll和动态链接一些dll?

【问题讨论】:

【参考方案1】:

无法通过删除某些函数来缩小 QtGui4.dll。奇趣科技是having a look at this,但好的解决方案似乎很遥远:

静态链接,我觉得在windows上是很成问题的。每次我尝试,都是一场噩梦。

因此,您似乎被常规 DLL 卡住了。你唯一能做的(我为我的 Qt 应用做的就是):

使用UPX 压缩您的DLL

在安装程序中使用强压缩

如果您已经对您的 dll 进行了 UPX,则无法通过安装程序压缩进一步减少它,但这可以减少其他文件。

【讨论】:

是的,“UPX -9 QtGui4.dll”是要走的路:) 有趣的提示,我以前从未使用过 UPX。 谢谢!您可以通过这种方式存档的 GUI Qt 应用程序的最小占用空间是多少? 我认为可以删除一些不需要的功能。见Hatchet【参考方案2】:

最好的方法是使用 configure 手动配置 Qt 库。通过发行

configure --help

您会看到许多可能有助于减少磁盘和内存占用的选项。例如

--no-stl
--no-exceptions

既可以减少应用程序的占用空间。您还可以修改 mkspec 为您的编译器使用更积极的优化标志。

【讨论】:

【参考方案3】:

如果您静态链接,您最终会得到一个 1.5GB 的 exe,并且您会牺牲一些功能,例如插件。因此,除非您不想分发 dll,否则这并不值得。但是,是的,您可以尝试 Henrik 的建议,同时排除可能是最大代码块的 Webkit。

【讨论】:

在原始问题的上下文中,排除WebKit没有任何区别,因为他没有使用它(仅Core,Gui,Network模块)。

以上是关于减小 Qt GUI 应用程序的大小的主要内容,如果未能解决你的问题,请参考以下文章

我的 Windows 机器上的所有 QT 应用程序都有乱码 GUI

Qt实现系统桌面目录下文件搜索的GUI:功能一:文件查找与现实(上)

Qt5 强制 TabWidget 在窗口大小更改时调整大小

QT获取图片-》改变图片大小-》保存

qt使用freetype给图片添加字符

QT是啥软件啊?