减小 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