Название: [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
Да! Я только за! |