Название: Размер библиотек 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. Можно попробовать собрать статически, но кажется мне что при использовании GUI она все равно на дискету не поместиться.Мне нужно как можно сильнее уменьшить общий размер приложения вместе с его библиотеками. Можно ли это как-то сделать? Например, выбросить из этих dll'ок неиспользуемую мной функциональность. Чтобы было в пределах объема дискеты. [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 Эта тема поднималась уже много раз. И что получится по объему в результате при использовании -no-exceptions вместе с -Os?Соберите куте с оптимизацией -Os(ключ оптимизации по размеру для компилятора mingw32 ) На этапе configure указать ключ -no-exceptions (если вы исключениями не пользуетесь). Использование данного ключа уменьшит размер файлов на 15-20%. Для уменьшения размера исполняемых файлов и разделяемых библиотек может быть использован упаковщик исполняемых файлов UPX. Искал по "размер 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 мне нравится подход "все в одном" с хорошей интеграцией этого всего и наличие так сказать прослойки над С++, которая уменьшает вероятность внесения багов за счет низкоуровневой работы. Ну и графический дизайнер интерфейса тоже не помешает.Название: 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. Ну и конечно же статическая сборка - это не оспаривается даже, это обязательно =) Не важно как ты подключаешь: Код
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 проблема в потреблении памяти рантайм...
|