Уменьшить размер приложения Qt GUI - PullRequest
14 голосов
/ 22 мая 2009

Я учусь разрабатывать приложения, используя Qt Creator. Я построил простое приложение под Windows, зависит от использования mingwm10.dll, QtCore4.dll, QtGui4.dll, QtNetwork4.dll. Из QtQui4.dll я использую только пару виджетов, а все остальное не нужно ... Можно ли уменьшить размер QtGui4.dll или сделать что-то еще, чтобы уменьшить размер развертывания приложения? Как насчет статических ссылок? Будет ли он включать всю DLL или только ее части, которые используются? А также возможно ли с помощью Qt связывать некоторые библиотеки статически, а некоторые динамически?

Ответы [ 3 ]

13 голосов
/ 22 мая 2009

Невозможно сжать QtGui4.dll, удалив некоторые функции. Trolltech смотрит на это , но хорошее решение кажется довольно далеким:

Статическое связывание, я думаю, это очень проблематично для Windows. Каждый раз, когда я пытался, это был кошмар.

Итак, похоже, что вы застряли с обычной DLL. Единственное, что вы можете сделать (что я делаю для своих приложений Qt):

  • используйте UPX для сжатия вашей DLL

или

  • используйте сильное сжатие в вашем установщике

Если у вас уже есть UPX для вашей dll, вы не можете уменьшить ее еще больше с помощью сжатия установщика, но это может уменьшить другие файлы.

7 голосов
/ 22 мая 2009

Лучший способ - вручную настроить библиотеку Qt с помощью configure. Выпуская

configure --help

вы увидите ряд опций, которые могут помочь уменьшить объем дискового пространства и памяти. Э.Г.

--no-stl
--no-exceptions

может уменьшить размер вашего приложения. Вы также можете изменить mkspec, чтобы использовать более агрессивные флаги оптимизации для вашего компилятора.

2 голосов
/ 22 мая 2009

Если вы создаете статическую ссылку, вы получаете 1,5 ГБ exe-файл и жертвуете некоторыми функциями, такими как плагины. Так что это не стоит того, если вы не хотите распространять библиотеки. Но да, вы можете попробовать предложение Хенрика, а также исключить Webkit, который, вероятно, является самой большой частью кода.

...