Russian Qt Forum

Qt => Общие вопросы => Тема начата: quark от Февраль 19, 2010, 22:15



Название: Размер библиотек Qt
Отправлено: quark от Февраль 19, 2010, 22:15
Библиотеки Qt весят довольно много: QtCore4.dll - 2,7 Mb, QtGui4.dll - 10,4 Mb.

Мне нужно как можно сильнее уменьшить общий размер приложения вместе с его библиотеками. Можно ли это как-то сделать? Например, выбросить из этих dll'ок неиспользуемую мной функциональность. Чтобы было в пределах объема дискеты.


Название: Re: Размер библиотек Qt
Отправлено: BRE от Февраль 19, 2010, 22:23
Библиотеки Qt весят довольно много: QtCore4.dll - 2,7 Mb, QtGui4.dll - 10,4 Mb.

Мне нужно как можно сильнее уменьшить общий размер приложения вместе с его библиотеками. Можно ли это как-то сделать? Например, выбросить из этих dll'ок неиспользуемую мной функциональность. Чтобы было в пределах объема дискеты.
Можно попробовать собрать статически, но кажется мне что при использовании GUI она все равно на дискету не поместиться.

[off]Неужели где-то еще дискетами пользуются?  ::)[/off]


Название: Re: Размер библиотек Qt
Отправлено: Sancho_s_rancho от Февраль 19, 2010, 22:35
Эта тема поднималась уже много раз.
Соберите куте с оптимизацией -Os(ключ оптимизации по размеру для компилятора mingw32 )
На этапе configure указать ключ -no-exceptions (если вы исключениями не пользуетесь). Использование данного ключа уменьшит размер файлов  на 15-20%. Для уменьшения размера исполняемых файлов и разделяемых библиотек может быть использован упаковщик исполняемых файлов UPX.
Но может вы просто неправильно выбрали инструменты? Подумайте о fltk или вообще о связке языка C с прямым вызовом api-шных функций ОС.


Название: Re: Размер библиотек Qt
Отправлено: quark от Февраль 19, 2010, 23:05
Эта тема поднималась уже много раз.
Соберите куте с оптимизацией -Os(ключ оптимизации по размеру для компилятора mingw32 )
На этапе configure указать ключ -no-exceptions (если вы исключениями не пользуетесь). Использование данного ключа уменьшит размер файлов  на 15-20%. Для уменьшения размера исполняемых файлов и разделяемых библиотек может быть использован упаковщик исполняемых файлов UPX.
И что получится по объему в результате при использовании -no-exceptions вместе с -Os?

Искал по "размер qt dll" и нашел пока только http://www.prog.org.ru/topic_3974_0.html (http://www.prog.org.ru/topic_3974_0.html) Про -Os там забыли упомянуть, -no-exceptions есть. Ну и еще кучу опций компиляции отключили, вот только безопасно ли это?.

Но может вы просто неправильно выбрали инструменты? Подумайте о fltk или вообще о связке языка C с прямым вызовом api-шных функций ОС.
Мне нужна работа с базами данных, которой нет в fltk(и не должно быть, так как это GUI toolkit). В Qt мне нравится подход "все в одном"  с хорошей интеграцией этого всего и наличие так сказать прослойки над С++, которая уменьшает вероятность внесения багов за счет низкоуровневой работы.  Ну и графический дизайнер интерфейса тоже не помешает.

С с OS API для моей задачи это сильный перебор, у меня просто навороченная морда над БД с графиками и т. п.


Название: Re: Размер библиотек Qt
Отправлено: Sancho_s_rancho от Февраль 19, 2010, 23:22
Даже если вы пересоберете библиотеку выкинув все "лишнее", и упаковщиком еще пройдетесь, то размер уменьшится мегабайт до 3-4, т.е. на дискету 1,44 мб вы все равно не влезите. В добавок вам необходимо будет помнить о созданных вами же ограничениях при разработке и/или поддержке ПО.


Название: Re: Размер библиотек Qt
Отправлено: lit-uriy от Февраль 20, 2010, 09:00
>>Неужели где-то еще дискетами пользуются?
Ага, я с такой же фигнёй маялся, пришлось архив нарезать на клочки и коробку дискет отправить заказчику. :)
Просто комп далеко в тайге стоит, и USB'ей даже примерно нету и виндовоз 98 и CD'юка нету, вообще алес


Название: Re: Размер библиотек Qt
Отправлено: panAlexey от Февраль 20, 2010, 17:18
Но может вы просто неправильно выбрали инструменты? Подумайте о fltk или вообще о связке языка C с прямым вызовом api-шных функций ОС.
Мне нужна работа с базами данных, которой нет в fltk(и не должно быть, так как это GUI toolkit). В Qt мне нравится подход "все в одном"  с хорошей интеграцией этого всего и наличие так сказать прослойки над С++, которая уменьшает вероятность внесения багов за счет низкоуровневой работы.  Ну и графический дизайнер интерфейса тоже не помешает.
У вас противоречие целей и "нравицо". Поддерживаю Sancho_s_rancho, определитесь уж че важнее..


Название: Re: Размер библиотек Qt
Отправлено: mcrads от Февраль 20, 2010, 18:29
Может вам следует строже относиться к включаемым модулям? например #include <QtGui> подключит весь модуль ГУЯ, а может вам оттуда нужно всего то QPushButton & QLabel? и тогда можно вместо включения всего куска весом в 4-5 Мб включить его элементы по 300Кб максимум. поэтому я бы посоветовал внимательнее следить за включаемыми модулями и контролировать каждый самому. даже из ядра кути QtCore. Ну и конечно же статическая сборка - это не оспаривается даже, это обязательно =)


Название: Re: Размер библиотек Qt
Отправлено: SABROG от Февраль 21, 2010, 02:03
Может вам следует строже относиться к включаемым модулям? например #include <QtGui> подключит весь модуль ГУЯ, а может вам оттуда нужно всего то QPushButton & QLabel? и тогда можно вместо включения всего куска весом в 4-5 Мб включить его элементы по 300Кб максимум. поэтому я бы посоветовал внимательнее следить за включаемыми модулями и контролировать каждый самому. даже из ядра кути QtCore. Ну и конечно же статическая сборка - это не оспаривается даже, это обязательно =)

Не важно как ты подключаешь:

Код
C++ (Qt)
#if 0
#include <QtGui> // так
#else
#include <QtGui/QLabel> // или так
#endif
 

Qt помещает ВСЕ классы в .dll на этапе компиляции Qt. Даже если ты используешь один самый маленький класс, но из модуля QtGui, то тебе придется тащить с собой весь модуль. Так как этими .dll могут пользоваться и другие программы написанные на Qt. Когда Qt собрана в статике, то компилятор сам выкидывает не нужное, то что ты не используешь. Но, если классы Qt внутри себя используют что-то то это выкинуто не будет. Например везде используется QString, это означает, что за ним потянутся все классы, которые как-то влияют на его работу, например QTextCodec с полным набором всевозможных кодировок, которые могут даже и не использоваться никогда тобой лично или самой Qt. Диаграмму зависимостей можно посмотреть здесь (http://doc.trolltech.com/extras/qt43-class-chart.pdf), правда она устарела на 3 года.


Название: Re: Размер библиотек Qt
Отправлено: mcrads от Февраль 21, 2010, 10:12
хм. догадывался, но не знал. но получается все равно чуть меньше чем при просто статике.


Название: Re: Размер библиотек Qt
Отправлено: break от Февраль 21, 2010, 13:57
Цитировать
так сказать прослойки над С++, которая уменьшает вероятность внесения багов за счет низкоуровневой работы
ерунда какая-то при использование библиотеки Qt обращение по нулевому или битому указателю будет также как и везде печально, и памячть тоже затереть можно - не понимаю о какой оболочке речь...

Цитировать
Qt помещает ВСЕ классы в .dll на этапе компиляции Qt.
вы имеете ввиду что линкер это делает при динамической линковке любых либ а не только Qt

Цитировать
хм. догадывался, но не знал. но получается все равно чуть меньше чем при просто статике.
почему чуть меньше? так же абсолютно - либа линкуется полностью.


Название: Re: Размер библиотек Qt
Отправлено: lit-uriy от Февраль 21, 2010, 19:45
>>Может вам следует строже относиться к включаемым модулям? например #include <QtGui> подключит весь модуль ГУЯ

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


Название: Re: Размер библиотек Qt
Отправлено: mcrads от Февраль 21, 2010, 21:14
для интереса перепроверился - ок. 300Кб меньше при описывании отдыльно. хотя может я просто собираю без ключика -no-exceptions - потому и сложилось такое впечатление))


Название: Re: Размер библиотек Qt
Отправлено: quark от Февраль 22, 2010, 00:34
каждый самому. даже из ядра кути QtCore. Ну и конечно же статическая сборка - это не оспаривается даже, это обязательно =)
К сожалению, не получится. Мне нужна LGPL лицензия. А для статики Qt идет под GPL или платной.


Название: Re: Размер библиотек Qt
Отправлено: crackedmind от Февраль 22, 2010, 07:03
-no-stl -no-qt3support позволят еще несколько уменьшить размер dll'ок :) Но ИМХО при всем желании не выйдет уменьшить до такой степени чтоб влезало на дискету


Название: Re: Размер библиотек Qt
Отправлено: ax от Февраль 22, 2010, 12:12
можно упаковщиком, например, UPX - upx.sourceforge.net (http://upx.sourceforge.net).
QtCore4.dll c 2'150'912 до 920'576 - 42.8%
QtGui4.dll c 8'105'472 до 3'536'384 - 43.63%
......

проблем не выявил.


Название: Re: Размер библиотек Qt
Отправлено: ритт от Февраль 23, 2010, 00:48
проблема в потреблении памяти рантайм...