我是qt的新手。我做了一个非常简单的qt程序,因为我没有商业许可证,我使用了依赖walker并将我的qtsdk文件夹中的所有.dll添加到我的release文件夹中。它工作得很好。但是当我检查它的大小时它非常大。我的问题是如何让它变小。还解释了静态库和动态库之间的区别以及它如何影响应用程序的大小。有多少种方法有没有购买商业许可证使qt应用程序更小。感谢任何帮助。
答案 0 :(得分:8)
通常,您无法做任何事情来显着减小应用程序及其依赖项的大小。有些事我认为你没有考虑过,或者必要时可以做到:
您不需要所有Qt DLL。根据您使用的Qt的哪些部分,您可以省略QtWebKit等内容。这可能会将您的应用程序重新分配大小减少一半。
如果您的可执行文件很大,请尝试使用选项进行编译以优化大小而不是速度。根据您的应用,最终性能应该接近或甚至优于通常的优化。 GCC为-Os
,MSVC为/Os
。
剥去调试符号的DLL和可执行文件。发布版本应该已经自动完成。我希望你不要抱怨调试二进制文件的大小......
使用UPX之类的内容压缩二进制文件。这只是装饰性的,并附带some subtle drawbacks。
使用上述选项重新编译Qt,这可能会占总Qt DLL大小的5-10%。您还可以禁用不需要的功能(如未使用的Qt样式),从而进一步减小DLL的大小。但这很乏味,可能不值得,因为每当你更新到最新版本时你都需要重新编译Qt。
话虽这么说,如果您的代码是GPL许可的,那么没有什么可以阻止您静态链接Qt。您需要自己编译静态Qt库,或者在某处找到它们。通常,静态链接会增加可执行文件的大小,但可能允许编译器省略通常仍存在于DLL版本中的图像中未使用的代码。所以,是的,静态链接可能会使您的应用程序的总大小变小。