【发布时间】:2009-11-27 07:10:33
【问题描述】:
我最近关注了 Qt4-interest 邮件列表上关于构建商业/专有应用程序并将 Qt4 静态链接到其中是否合法的讨论。虽然有一些未经证实的方法(通过向客户提供目标文件和 Makefile 等),但毕竟这听起来不是一个好主意。
我的一个项目是使用 LGPL 许可的 Qt4 库,我使用所有平台上的简单安装程序将它们作为单独的 DLL/Dylibs/so 发送给我的客户。虽然到目前为止这工作得很好,但我想优化 a) 通过仅包含我需要的内容来减少 Qt 库大小来优化安装程序的大小,b) 提高我的应用程序的启动/加载速度。
我对自己编译 Qt 很熟悉,但是 Qt 有很多标志和开关。
现在我正在使用以下标志进行构建:
./configure \
-fast \
-opensource \
-qt-sql-sqlite \
-nomake demos examples \
-silent \
-no-qt3support \
-no-gif \
-plugin-sql-mysql \
-release \
-no-xmlpatterns \
-no-multimedia
我不完全确定以下标志有哪些影响/影响:
-no-stl-no-javascript-jit-no-nis-separate-debug-info-no-openvg-no-mitshm
我还能做些什么,例如,为编译器提供优化开关,或者从构建的 Qt 库中“剥离”未使用的函数以使其更小(这对于静态构建来说很容易)。我对此没有太多经验。
哦,顺便说一句,当动态链接到 Qt 时,我编译的应用程序大小约为 600 kb(未剥离)。我对它进行了试验,发现静态链接时它的大小约为 4 MB;但这样我就不必再包含 40 MB 的 Qt 库了。
因此,将以上所有内容放入问题/请求中:
如果您在这个主题上比我更先进,您如何优化/部署自己的应用程序并确保它们快速启动并且只包含需要的内容?
【问题讨论】:
标签: c++ qt optimization deployment qt4