如何缩小Qt应用程序
How can I make Qt app smaller
我是qt的新手。我制作了一个非常简单的qt程序,因为我没有商业许可证,所以我使用了dependencywalker,并将qtsdk文件夹中的所有.dll添加到了发布文件夹中。它运行得很好。但当我检查它的尺寸时,它非常大。我的问题是我怎样才能把它变小。还要解释静态库和动态库之间的区别,以及它如何影响应用程序的大小。有多少方法可以让qt应用程序在不购买商业许可的情况下变得更小。感谢您的帮助。
通常,您无法显著减小应用程序及其依赖项的大小。有几件事我认为你没有考虑过,或者,如果必要的话,可以做:
-
您不需要所有的Qt DLL。根据你使用的Qt的哪些部分,你可以省略QtWebKit和其他东西。这很可能会将应用程序的重新分发大小减半。
-
如果是您的可执行文件很大,请尝试使用优化大小而不是速度的选项进行编译。最终的性能应该接近甚至可能比通常的优化效果更好,这取决于您的应用程序。这对于GCC是
-Os
,对于MSVC是/Os
。 -
剥离调试符号的DLL和可执行文件。发布版本应该已经自动完成了这项工作。我希望你不要抱怨调试二进制文件的大小。。。
-
用类似UPX的东西压缩二进制文件。不过,这只是表面上的,也有一些微妙的缺点。
-
使用上述选项重新编译Qt,这可能会减少Qt DLL总大小的5-10%。您还可以禁用不需要的功能(如未使用的Qt样式),从而进一步减小DLL的大小。但这很乏味,可能不值得,因为无论何时更新到最新版本,都需要重新编译Qt。
也就是说,如果你的代码是GPL许可的,没有什么可以阻止你静态链接Qt。您需要自己编译静态Qt库,或者在某个地方找到它们。通常,静态链接会增加可执行文件的大小,但可能会允许编译器从通常仍存在于DLL版本中的映像中省略未使用的代码。所以,是的,静态链接可能会使应用程序的总大小变小。
- "string.h"在构建适用于iOS的qt应用程序中找不到消息
- 使用 Bazel 编译 QT 应用程序时访问资源
- 将 Crashpad 与 Windows Qt 应用程序集成
- 在Visual Studio中单实例Qt应用程序版本5.11.1中,在所有其他窗口的顶部打开Qt MainWindow
- 在 Ubuntu 服务器上运行 QT 应用程序时崩溃
- 如何在Android设备上解析Qt应用程序的ClassNotFoundEception?
- Qt应用程序找不到第三方DLL并崩溃
- 在 Linux 上部署 Qt 应用程序
- 如何设置Qt应用程序以使用类Unix系统的实际环境变量?
- Android因为权限问题而杀死Qt应用程序
- 初始化和终止Qt应用程序的正确方法?
- Qt 5 应用程序崩溃并出现"qLineEdit::setText"
- 从 ParaView 构建自定义 Qt 应用程序示例时出错
- Qt 应用程序具有意外的 QDir::currentPath
- Qt应用程序不响应鼠标和键盘事件
- 在Qt应用程序中包含Python.h会导致对Qt函数的未定义引用
- 需要有关在qt c ++应用程序中使用崩溃问题的建议
- 从Qt应用程序执行MSI文件
- Qt 应用程序中与Qt版本相关的运行时错误
- 将Qt应用程序与CMake和Visual Studio链接起来