Недавно я следил за обсуждением в списке рассылки Qt4-интереса о том, законно или нет создавать коммерческое / частное приложение и статически связывать с ним Qt4. Несмотря на то, что существуют некоторые непроверенные способы сделать это (путем предоставления объектных файлов, Makefile и т. Д. Клиенту), это не кажется такой хорошей идеей.
Один из моих проектов - использование лицензированных LGPL библиотек Qt4, и я поставляю их как отдельные библиотеки DLL / Dylibs / для моего клиента, используя простой установщик на всех платформах. Пока это работает довольно хорошо, я хотел бы оптимизировать 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, чтобы сделать ее меньше (что было бы легко в статических сборках). У меня нет большого опыта с этим.
Да, как примечание, размер моего скомпилированного приложения составляет около 600 КБ (без очистки) при динамическом соединении с Qt. Я экспериментировал с ним и обнаружил, что его размер составляет около 4 МБ, когда я статически связываюсь; но таким образом мне больше не нужно будет включать 40 МБ библиотек Qt.
Итак, чтобы поместить все вышеизложенное в вопрос / запрос:
Если вы более продвинуты, чем я, в этой теме, как вы оптимизируете / развернете свои собственные приложения и убедитесь, что они запускаются быстро и содержат только то, что нужно?