Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: navrocky от Июль 03, 2009, 14:39



Название: Qt,Windows: Размер статически слинкованной проги с Qt поверг в ужас
Отправлено: navrocky от Июль 03, 2009, 14:39
Качнул Qt SDK, собрал ее с ключом -static.

Написал простейшую программу с одним виджетом:
Код
C++ (Qt)
#include <QtGui/QApplication>
#include <QWidget>
 
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   QWidget w;
   w.show();
   return a.exec();
}

файл проекта:
Код
C++ (Qt)
TARGET = qttest
TEMPLATE = app
SOURCES += main.cpp

Размер исполняемого файла получил 11Мб  :o
gcc-3.4, qt 4.5.1.

У всех так?


Название: Re: Qt,Windows: Размер статически слинкованной проги с Qt поверг в ужас
Отправлено: lit-uriy от Июль 03, 2009, 14:52
релиз или отладочная версия?


Название: Re: Qt,Windows: Размер статически слинкованной проги с Qt поверг в ужас
Отправлено: navrocky от Июль 03, 2009, 15:03
Qt собирал как релиз, в проекте тоже не указано что отладка, значит релиз. В Makefile заглянул - там оптимизации включены, отладочных ключей нет.

Вообще gcc способен на умную статическую линковку? или он тупо шьет все либы к экзешнику...

Кто каких размеров добивался и с каким компилятором?


Название: Re: Qt,Windows: Размер статически слинкованной проги с Qt поверг в ужас
Отправлено: SABROG от Июль 03, 2009, 15:17
Кто каких размеров добивался и с каким компилятором?

1,8Мб с MinGW. 11 Мб для статики нормально. Зато не придется ставить всякие redistributable как для msvc.

А вообще тема уже настолько заезженная, что повторяться в сотый раз не хочется.


Название: Re: Qt,Windows: Размер статически слинкованной проги с Qt поверг в ужас
Отправлено: CroCIV от Июль 03, 2009, 15:29
Мне кааца это нормальный размер, Qt же не обращается к графической подсистеме винды. для управления своим гуём он использует свой собственный двиг, вот этот двиг и инклудится в екзешник, и запуская прилогу вначале прогружается в память этот двиг, а потом этот двиг начинает управлять формами твоего приложения. Тут нада ставить другой вопрос, почему екзешник получился такой маленький ? представляю каким бы был экзешник виндовой прилоги еслиб винда в него засунула свою подсистему вывода =))


Название: Re: Qt,Windows: Размер статически слинкованной проги с Qt поверг в ужас
Отправлено: navrocky от Июль 03, 2009, 15:53
1,8Мб с MinGW.
Это при каких условиях? с Qt или без?
Просто мне кажется, что линкер gcc очень туп, без разбора шьет все функции, которые есть в либе. Может его можно как-то образумить? Хотя..... я сейчас померял суммарный объем либ libQtCore.a и libQtGui.a - 25Мб. Все-таки он что-то из них выкинул :-\

Тогда немного другой вопрос, можно ли добиться уменьшения объема, используя другие компиляторы?


Название: Re: Qt,Windows: Размер статически слинкованной проги с Qt поверг в ужас
Отправлено: Admin от Июль 03, 2009, 16:42
как я уже писал программа на .NET

300K кода + 300 мегобайт фреймворк

После этого QT милашка.


Название: Re: Qt,Windows: Размер статически слинкованной проги с Qt поверг в ужас
Отправлено: break от Июль 03, 2009, 17:48
ОФФТОП:

Этот вопрос становится самым частым и самым глупым мегобаяном...
Цитировать
Размер исполняемого файла получил 11Мб
Сори за эмоции, но я больше не могу....

Вы собираетесь свою программу с 1 виджетом засовывать в микропроцессор где доступно только 4 kb или как?. А игрушку поставьте - самую трешовую - с ублюдской анимацией, мыльными текстурами и двикжом трехлетней давности, городом мозданным из 3-х домов под разными углами поставленными методом копи - пасте - вас не удивит что она 15 Гб весит???
А виндовс XP - в самой минимальной устаноке сколько весит вас не удивляет - неужели менее 11 Mb, а виста сколько в минимуме займет? - Я бы тоже удивился если бы ваша программа 11 Гб весила а не Мб.

Мне кажестя эти вопросы возникают от непонимания что такое Qt и почему аналогичные программы написанные на MSVC(или на чем то еще) меньше весят -
1) ДА ПОТОМУ ЧТО В СЛУЧАЕ С MSVC аналогичные библиотеки уже имеются в системе
2) Qt кросплатформенная библиотека - надо иметь это ввиду и как бы понимать что код должен быть чуть сложнее чем реализации нативных возможностей 1-й системы, хотя я думаю это минимум размера добавляет

В свое время я программировал на Делфи - там программы весила меньше если соответствующие BPL (фактически DLL) опять же лежали в системп - а если слинковать статически - то размер как бы не 20 метров будет... (там такая опция есть)

Да и вообще сколько стоит жесткие диски сейчас - время думать не о размере на диске а о скорости разработки, выполнения, надежности программ. В сове время у меня был компьютер с диском 50 Мб - да тогда ч бы офигел от размера 10 м. экзешника - а сейччас даже не замечу...


Название: Re: Qt,Windows: Размер статически слинкованной проги с Qt поверг в ужас
Отправлено: ритт от Июль 03, 2009, 20:48
break, окружи пост выше тэгами оффтопика :)

CroCIV, лучше совсем не пиши, чем писать такое.

navrocky, кури qtconfig. если размер бинаря - важный аспект задачи, дополнительно можешь включить оптимизацию по размеру в ущерб производительности приложения. а ещё открой для себя UPX.
зы. линковщик в бинутилзах - чего его примешивать к гцц?


Название: Re: Qt,Windows: Размер статически слинкованной проги с Qt поверг в ужас
Отправлено: MURIK от Август 02, 2009, 11:01
Просто надо писать не используя Qt.
Если так уж надо кроссплатформенность, то используйте... бейсик - PureBasic http://purebasic.info/
Я не шучу!

Вот пример проги, создающей окно с кнопкой
Код:
; Создаём окно.
OpenWindow(1,0,0,200,90,"Заголовок окна",#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
ButtonGadget(2,64,30,80,25,"Кнопка")
 
Repeat; Начало главного цикла.
Event=WaitWindowEvent(); Получаем идентификатор события.
Gadget=EventGadget(); Узнаём идентификатор активного гаджета.
 
  If Event=#PB_Event_Gadget And Gadget=2; Условие будет выполнено при щелчке по кнопке.
   MessageRequester("Сообщение","Была нажата кнопка"); Выводим на экран сообщение.
  EndIf
 
Until Event = #PB_Event_CloseWindow; Прерываем цикл при закрытии окна
Этот пример без каких-либо модификаций можно скомпилировать под Windows х86, Windows х64, Linux, MacOS X и AmigaOS с помощью компиляторов http://www.purebasic.com/download.php
Размер исполняемого файла получается примерно 20КБ (зависит от платформы, для которой он предназначен) и для его работы не нужны никакие библиотеки кроме системных.

Скрин проги
(http://s55.radikal.ru/i150/0906/dc/1a2a4736bd0a.png)

Во вложении скомпилированая программа для Windows и Linux.


Название: Re: Qt,Windows: Размер статически слинкованной проги с Qt поверг в ужас
Отправлено: denka от Август 02, 2009, 11:17
ОФФ: Это печально - регистрироваться на форуме у которого основное направление Qt & C++ и пытаться там пропихнуть какой то Бейсик  :)


Название: Re: Qt,Windows: Размер статически слинкованной проги
Отправлено: Rcus от Август 02, 2009, 11:19
Ну и шуточки у вас, с каких это пор gtk стала системной библиотекой? Если нужен такой кросслпатформенный аналог MFC, то уж проще wx взять.


Название: Re: Qt,Windows: Размер статически слинкованной проги с Qt поверг в ужас
Отправлено: f-r-o-s-t от Август 02, 2009, 11:35
 :-[ Ужас какой ! Может ну его нахер ООП и сидеть клепать кроссплатформенные окошечки =(


Название: Re: Qt,Windows: Размер статически слинкованной проги с Qt поверг в ужас
Отправлено: n. tr. от Август 03, 2009, 10:05
У всех так?

А сами-то как думаете? Посмотрите размер qtcore.lib и qtgui.lib.
Если собирать динамически, то придётся пихать эти qtcore4.dll и qtgui4.dll в дистрибутив, что приведёт к такому же итоговому размеру.
Хотя сейчас посмотрел, релизная версия у одной не очень большой программы у меня 5мб (дебаг - 11.3), в зип-архиве порядка меньше 2 мб.

Непонятно только возмущение/удивление. ПОчему такой размер - ясно. Чем это плохо - не ясно. А вот чему возмущаться тем более непонятно.
Хочется писать маленькие программы для win - используйте MFC или там WTL.



Название: Re: Qt,Windows: Размер статически слинкованной проги с Qt поверг в ужас
Отправлено: kuzulis от Август 03, 2009, 11:53
Люди, а пробовал ли кто "вырезать" ненужные классы при статичекой сборке приложений? И какой минимальный размер занимали приложения? И какие классы использовались?

Кидайте сюда инфу :)

PS : смотреть тут http://www.forum.crossplatform.ru/index.php?showtopic=981&st=20
пост №38


Название: Re: Qt,Windows: Размер статически слинкованной проги с Qt поверг в ужас
Отправлено: pastor от Август 03, 2009, 23:58
Люди, а пробовал ли кто "вырезать" ненужные классы при статичекой сборке приложений? И какой минимальный размер занимали приложения? И какие классы использовались?

Занимались уже таким. Ищи по форуму


ЗЫ: Смысла я конечно в этом невижу :)


Название: Re: Qt,Windows: Размер статически слинкованной проги с Qt поверг в ужас
Отправлено: kuzulis от Август 04, 2009, 07:41
Цитировать
Занимались уже таким. Ищи по форуму
это понятно

Цитировать
ЗЫ: Смысла я конечно в этом невижу Улыбающийся
как это? а если например приложение должно работать на встраиваемых железяках?!!


Название: Re: Qt,Windows: Размер статически слинкованной проги с Qt поверг в ужас
Отправлено: pastor от Август 04, 2009, 09:41
как это? а если например приложение должно работать на встраиваемых железяках?!!

Для эмбедед согласен, это уже обсудили. Но для десктопа смысла невижу


Название: Re: Qt,Windows: Размер статически слинкованной проги с Qt поверг в ужас
Отправлено: kuzulis от Август 04, 2009, 10:41
Цитировать
Для эмбедед согласен, это уже обсудили. Но для десктопа смысла невижу
1. Где обсудили?
2. А если прога должна работать как на десктопе так и на встраиваемой железяке?!



Название: Re: Qt,Windows: Размер статически слинкованной проги с Qt поверг в ужас
Отправлено: pastor от Август 04, 2009, 23:02
1. Где обсудили?
2. А если прога должна работать как на десктопе так и на встраиваемой железяке?!

1. Ищи аналогичные темы по форуму
2. А ты как думаешь?


Название: Re: Qt,Windows: Размер статически слинкованной проги с Qt поверг в ужас
Отправлено: kuzulis от Август 05, 2009, 07:59
1. OK
2. Никак не думаю.. я спрашиваю! Для работы проги на ембеддед железках можно ли довольствоваться обычным дистром QT4 , просто вырезав ненужные классы при линковке приложения? Или для этого нужно качать и QT для ембеддед? т.е много непоняток
3. А сколько весят приложения при использовании QT ембеддед? И сколько весит сам установленный QT ембеддед?


Название: Re: Qt,Windows: Размер статически слинкованной проги с Qt поверг в ужас
Отправлено: lit-uriy от Август 05, 2009, 20:56
kuzulis, по №3 - скорее отдельная тема.


Название: Re: Qt,Windows: Размер статически слинкованной проги с Qt поверг в ужас
Отправлено: pastor от Август 05, 2009, 22:20
2. Никак не думаю.. я спрашиваю! Для работы проги на ембеддед железках можно ли довольствоваться обычным дистром QT4 , просто вырезав ненужные классы при линковке приложения? Или для этого нужно качать и QT для ембеддед? т.е много непоняток

Для работы проги на ембеддед железках нужно скачать Qt for Embedded. Про процесс установки можно почитать здесь (http://doc.qtsoftware.com/4.5/qt-embedded-linux.html).

В любом случае, толи с Qt для десктопа, толи для ембеддед из Qt можно "вырезать" ненужные тебе модули. Во времена  qtopia-core была тулза qconfig для редактирования qconfig.h, при помощи которой можно было отключить ненужные модули. (Как сейчас дела обстоят в qt embedded незнаю). Вприницпе это можно выполнить и вручную. Когда-то на эту тему был топик.

Вот он, нашел. (http://www.prog.org.ru/topic_3974_0.html)