Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: Mindtraveller от Март 11, 2007, 05:00 Пишу утилиту с использованием QT. Есть необходимость сделать файл как можно меньше. UPX - само собой, но здесь хотелось бы обсудить возможность уменьшения исходного файла.
Что для этого было сделано. Собран QT, 4.2.2 (configure + mingw32-make), статически, release. Ключи конфигуратора выключали почти всё, кроме stl (без него не проходит сборка qtGUI). При этом libQtCore = 2 Mb, libQtGui = 9 Mb. Отсюда, в QDevelop при помощи того же MinGW собиралось тестовое приложение, где есть только главное окно. Размер приложения получился 5 Mb. Вопрос к профессионалам: в моём случае, как можно уменьшить размер EXE-файла (без UPX), если можно, объясните по пунктам. Схожая тема на форуме была мною изучена, к сожалению не помогло (возможно, что-то сделал не так). Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: Mr. Пронька от Март 11, 2007, 10:22 Как предполагается распространять приложение? Возможны ли апдейты или только скачивание новой версии?
Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: Alex03 от Март 11, 2007, 10:37 exception при сборке qt отключали?
Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: Mindtraveller от Март 11, 2007, 11:06 Mr. Пронька: только скачивание новой версии
Alex03: исключения выключены, rtti тоже Название: Re: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: pastor от Март 11, 2007, 13:47 Цитата: "Mindtraveller" Вопрос к профессионалам: в моём случае, как можно уменьшить размер EXE-файла (без UPX), если можно, объясните по пунктам. Поробуй прогнать утилитой strip с параметром -s Цитировать -s --strip-all Remove all symbol and relocation information Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: Вудруф от Март 11, 2007, 13:52 strip --strip-unneeded
добавлено спустя 1 минуту: Ещё можно при конфигурации заюзать -no-qt3support Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: Mindtraveller от Март 11, 2007, 17:04 1) qt3support был отключен изначально
2) strip -s не помог: размер файла не уменьшился Есть ещё какие-то пути? Может быть, полученный размер библиотек (см. выше) слишком большой? Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: evilguard от Март 11, 2007, 17:39 Mindtraveller
Че-то размер великоват, у меня QTCore 1.5 Mb, QTGui 5Mb, причем при сборке ничего не отключал, есть все. Компилил MSVC, QT 4.2.2 Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: Mindtraveller от Март 11, 2007, 17:48 evilguard, а при статической линковке какой получается размер ехе-шника где просто одно окно без ничего?
Причём ты возможн привёл размер dll-ок, а я привёл размер либов. Длл-ки могут тянуть за собой другие длл-ки, отсюда, возможно, и разница в размере. Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: evilguard от Март 11, 2007, 18:15 Хорошо, размер либов - QTGui4.lib - 3.59Mb, QTCore4.lib - 1.1Mb.
Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: Mindtraveller от Март 11, 2007, 18:33 Классно. Ровно в 2 раза меньше.
Увы, не знаю как добиться при сборке minGW. Может кому-нибудь удавалось настолько уменьшить размер либов? Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: crossly от Март 11, 2007, 18:33 Цитата: "evilguard" Хорошо, размер либов - QTGui4.lib - 3.59Mb, QTCore4.lib - 1.1Mb. при сборке с помощью msvc размер всегда меньше.... Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: evilguard от Март 11, 2007, 19:27 Цитата: "crossly" Цитата: "evilguard" Хорошо, размер либов - QTGui4.lib - 3.59Mb, QTCore4.lib - 1.1Mb. при сборке с помощью msvc размер всегда меньше.... Ну я собирал, не отключая ничего. Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: pastor от Март 11, 2007, 20:02 У меня MinGW 3.4.5 (Candidate). Собрал qt-win-opensource-src-4.2.3 со следующим конфигом:
-debug-and-release -no-stl -no-rtti -no-qt3support -no-dsp -no-vcproj -no-accessibility Размер либы libQtCore4.a - 1.7 Мб, libQtGui4.a - 6.2 Мб Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: Mindtraveller от Март 11, 2007, 21:24 А размер тестовой программы (как в первом постинге) какой получается?
Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: pastor от Март 12, 2007, 00:33 Цитата: "Mindtraveller" А размер тестовой программы (как в первом постинге) какой получается? Я сделал вот такой тестовый пример: Код: #include <QApplication> Релиз получился 23 Кб, дебаг - 1,1 Мб. Если дебаг версию прогнать strip -s, то размер получаеться 24 Кб. ЗЫ: Размер у меня будет отличен от твоего из-за того что у тебя Qt собрана статически. Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: Mindtraveller от Март 12, 2007, 01:31 Так я и спрашиваю, при _статической_ линковке, у тебя какой получается размер в релизе?
Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: pastor от Март 12, 2007, 04:18 Выражусь по другому.... у меня нет статической сборки Qt под MinGW
Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: Вудруф от Март 12, 2007, 08:13 Цитировать pastor Что логично, т.к. strip вырезает все дебажные символы, и не только... Так у меня релиз с 600 кб до 400 кб сокращается... Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: pastor от Март 12, 2007, 14:12 Цитата: "Вудруф" Цитировать pastor Что логично, т.к. strip вырезает все дебажные символы, и не только... Так у меня релиз с 600 кб до 400 кб сокращается... У меня релиз не уменьшаеться в размере после strip. ИМХО и не должен, т.к. релиз не содержит дебажной информации. Уменьшаеться в размере только дебаг. Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: Вудруф от Март 12, 2007, 16:10 А хбз почему, но вот уменьшается :)
Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: pastor от Март 12, 2007, 17:07 Цитата: "Вудруф" А хбз почему, но вот уменьшается :) У тебя strip лучше ;) Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: Mindtraveller от Март 12, 2007, 21:44 pastor, тогда плиз не засоряйте тему. Здесь речь шла именно о статической линковке. С длл проблем не было пока.
Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: Dendy от Март 13, 2007, 16:41 Попробуй способ отсюда:
http://prog.org.ru/forum/lhtopic_3974_0_0_asc_%D5%CD%C5%CE%D8%DB%C5%CE%C9%C5+%D3%D4%C1%D4%C9%DE%C5%D3%CB%CF%CA.html Если что неясно - спрашивай. Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: SLiDER от Март 13, 2007, 22:11 Цитата: "Dendy" Попробуй способ отсюда: http://prog.org.ru/forum/lhtopic_3974_0_0_asc_%D5%CD%C5%CE%D8%DB%C5%CE%C9%C5+%D3%D4%C1%D4%C9%DE%C5%D3%CB%CF%CA.html Если что неясно - спрашивай. Мне конечно все равно, но со ссылкой явно какие-то проблемы. :? Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: Вудруф от Март 14, 2007, 08:48 Да, я прогнал. У release-сборки strip действительно размер не уменьшает.
Однако для обычной программы Код:
Собираемой вызовом Код: g++ 123.cpp -o 123.exe -O3 strip уменьшает размер с 478624 байт до 267264 байт. Вопрос: что ещё надо указывать в параметрах компилятора, чтобы "ничего лишнего" не добавлялось (вроде же для дебага требуется дополнительно -g...). Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: zabivator от Март 14, 2007, 09:24 Dendy способ настройки config.h перед сборкой кьюта. Он позволяет вырезать из сборк ненужные в программе виджеты.
Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: pastor от Март 14, 2007, 15:30 Цитата: "Вудруф" Вопрос: что ещё надо указывать в параметрах компилятора, чтобы "ничего лишнего" не добавлялось (вроде же для дебага требуется дополнительно -g...). g++ 123.cpp -o 123.exe -O3 -s Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: Dendy от Март 14, 2007, 19:42 Вот правильная ссылка:
http://prog.org.ru/forum/topic_3974_0.html Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: _govorilka от Март 15, 2007, 04:44 Mindtraveller, попробуй вообще не пользоваться либами!!! Подключай все *.h и *.cpp руками. Знаю, что это геморой, но нужно это сделать все один раз. Также можешь сделать полностью свою либу (только те классы, которые действительно нужны нужны!!!). Если все грамотно сделаешь, то сможешь выграть 25-30%, а может и больше. И еще - если есть возможность, возьми другой компилятор (MinGW - говно!!!). Из всех, что есть мне больше нравится IC++ от Intel, но это отдельная тема.
Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: SLiDER от Март 15, 2007, 22:46 Цитата: "_govorilka" И еще - если есть возможность, возьми другой компилятор (MinGW - говно!!!). Цитата: "Михаил Афанасьевич Булгаков" – ... И – боже вас сохрани – не читайте до обеда советских газет. – Гм… Да ведь других нет. :D Цитата: "_govorilka" Из всех, что есть мне больше нравится IC++ от Intel, но это отдельная тема. А компилятор действительно замечательный (хоть интел к его созданию ни какого отношения не имеет), но вот с версии 9, стал безбожно глючным и своенравным. :( Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: _govorilka от Март 16, 2007, 08:19 Цитировать А компилятор действительно замечательный (хоть интел к его созданию ни какого отношения не имеет), но вот с версии 9, стал безбожно глючным и своенравным. :( Кстати, про компиляторы, может новую тему создать... Название: [4.2.2, static, MinGW] Снова об уменьшении размера EXE Отправлено: evilguard от Март 16, 2007, 23:16 _govorilka
Да! Я только за! |