Как уменьшить размер собранного exe?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Как уменьшить размер собранного exe?

Сообщение Mr.Smart » 30.09.2009 20:59:40

Минимальное количество библиотек для запуска QT LCL приложения на Win32:
Код: Выделить всё
libqt4intf.dll - 1.2MB
mingwm10.dll - 15KB
QtCore4.dll - 2.6MB
QtGui4.dll - 10MB
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Как уменьшить размер собранного exe?

Сообщение Zinchenko.Sergey » 30.09.2009 22:25:56

У меня на ~15 форм и ~10000 строчек кода получилось 800кб exe файл. Кстати размер оного сильно колеблется от версии лазаря. Я на нём в опциях компилятора включаю оптимизацию, приоритет размера над скоростью, смарт линкинг и вырезание символов из исполняемого файла. После этого вес примерно 2.5мб , ну а далее UPX превращает их в 800кб.

Ну а если нужен прям уж совсем лайт-файл, то по моему лучше чем KOL и MCK ничего нету...)
Zinchenko.Sergey
незнакомец
 
Сообщения: 3
Зарегистрирован: 18.08.2009 23:23:14

Re: Как уменьшить размер собранного exe?

Сообщение carrots » 30.09.2009 23:41:30

Еще можно чисто на FPC писать, тогда приложение на основе GTK2 весит от 40кб. 8)
Только кросс-платформенности будет достичь сложнее.
Аватара пользователя
carrots
постоялец
 
Сообщения: 138
Зарегистрирован: 28.03.2008 02:13:02

Re: Как уменьшить размер собранного exe?

Сообщение Logo » 01.10.2009 02:33:15

А еще можно писать под консоль на ассемблере - СУПЕР! И скорость и размер, просто супер! И главное не нужен такой пережиток, как мышь. И глаза не устают, и от сути не отвлекаешься на разные рисуночки. Написал команду - поехало; нажал кнопочку - остановилось. Написал новую команду - оформатировало... Эх испоганили компьютер, испоганили всякими иксами и виндами. И 640 килобайт теперь всем мало :(

Добавлено спустя 4 минуты 15 секунд:
Короче понятно, кто хочет маленьких файлов, то тот получает маленькие, а кому безразлично, то ему безразлично. А кто не разобрался в сути, то ему нужно разобраться.

А вот Lazarus становится все лучше и лучше. Если так будет дальше, то через год-два это будет среда разработки в числе лидеров.

Добавлено спустя 4 минуты 23 секунды:
carrots писал(а):Еще можно чисто на FPC писать, тогда приложение на основе GTK2 весит от 40кб. 8)
Только кросс-платформенности будет достичь сложнее.

Задачи, для которых нужна кроссплатформенность, обычно очень большие и там совершенно нет надобности уменьшать размеры исполняемых файлов. А для специализированных приложений кроссплатформенность то зачем?
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Как уменьшить размер собранного exe?

Сообщение debi12345 » 01.10.2009 02:47:14

Qt: Framework Only¨ без SDK и без Qt Creator IDE под винду занимает 166 mb,

Не может такого быть, если оставлять только нужны конкретному приложению библиотеки !
Конечно, если это приложение спецон не нацелено использовать все фишки QT...
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Как уменьшить размер собранного exe?

Сообщение Logo » 01.10.2009 03:11:56

debi12345 писал(а):
Qt: Framework Only¨ без SDK и без Qt Creator IDE под винду занимает 166 mb,

Не может такого быть, если оставлять только нужны конкретному приложению библиотеки !
Конечно, если это приложение спецон не нацелено использовать все фишки QT...

Он имел ввиду, что если просто взять и инсталлировать. А выкидывать ненужное, это уже оптимизация, где она везде нужна, если нужна :)
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Как уменьшить размер собранного exe?

Сообщение carrots » 01.10.2009 14:23:39

Даже если брать только необходимые DLL, это будет минимум 10мб.
Но если вы используете QT Creator - сними у вас мало чего получится (Лазарь просто не использует все возможности QT, да и не нужны они там).

И еще если вы не хотите открывать исходный код на созданную вами программу под QT - вам придется платить за коммерческую лицензию, €2 995 одна лицензия (ограниченная 1 годом поддержки: €1 560 ).
Аватара пользователя
carrots
постоялец
 
Сообщения: 138
Зарегистрирован: 28.03.2008 02:13:02

Re: Как уменьшить размер собранного exe?

Сообщение Verx0Laz » 01.10.2009 23:33:52

Logo писал(а):А вот Lazarus становится все лучше и лучше. Если так будет дальше, то через год-два это будет среда разработки в числе лидеров.

Именно!
Когда-то читал статью про мёртвые языки программирования. Насторожила мысль, что все они имели какое-то преимущество над другими, но при этом, все они приказали долго жить.

Потом мне попалось многостраничное обоснование одного очень серьезного специалиста о том, что Java - лучший язык за всю историю программирования по возможностям управления всеми видами памяти. Восхитило! Пожалуй, у него... и еще у человек десяти в мире... джавовские проги будут летать, а не жестоко тормозить...
Потом было много чего... Но главная мысль осталась. И чтобы её передать, придется задавать вопросы:
почему?!
эволюция компьютеров пошла не в сторону усовершенствования шкафов, а в сторону персоналок?
Почему?!!
убогий Виндовс смог потеснить на местности все оси, в том числе и пингвина?
Почему?!!!
дэльфа смогла конкурировать с VC на виндовой платформе?
Почему?!!!!
выжила и местами даже процветает такая убогость, как VB?
---
А НИПАЧИМУ!!!!!
---
........................ ДОМОХОЗЯЙКИ
За кем они идут - тот и выживает.
Иногда мне кажется, что обзывать домохозяйками среднестатистического IT-специалиста или прикладного програмера - лучшая задумка великого Билли, ибо всем нам западло этот термин. Однако, если мы на форуме ВЫЖИВАЮЩЕГО и ПОБЕЖДАЮЩЕГО проекта кроссплатформенной среды разработки... в момент завершения тестирования очередной версии... спорим о строковых переменных!!!! ))))) Не мы-ли ...самые высококвалифицированные домохозяйки???
Извините, сказал :)))
Ребят, (с) существует мнение, и не только моё(/с), что мы чуток перегрелись.... может иногда стоит расслабиться? Завтра - великое пятнеццо!!! Всех поздравляю :))))
Аватара пользователя
Verx0Laz
постоялец
 
Сообщения: 125
Зарегистрирован: 11.09.2007 11:24:07

Re: Как уменьшить размер собранного exe?

Сообщение Лохматый » 29.10.2009 00:20:54

carrots писал(а):просто нужно в настройках компилятора включить оптимизацию, включить strip и отключить дебаг-инфомацию, перекомпилирувать с оптимизацией(-O3 -Xs -XX -CX) FreePascal и Lazarus


А можно поподробнее? -O3 -Xs -XX -CX в настройках компилятора стоит, но размер не уменьшается, те же ~11,5 метров, помогает только strip.exe (upx не использую). Надо перекомпилить FreePascal (2.2.4) и Lazarus (0.9.28)?

И еще... Модули Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls - они обязательны по умолчанию или, например, от Graphics можно отказаться, удалив его из этого списка, если я не использую графику в приложении, в целях уменьшения exe-файла?
Аватара пользователя
Лохматый
незнакомец
 
Сообщения: 3
Зарегистрирован: 25.10.2009 20:32:52
Откуда: Краснодар

Re: Как уменьшить размер собранного exe?

Сообщение Mr.Smart » 29.10.2009 00:42:53

strip - удаляет оладочную информацию из файла. Удаления модулей поумолчанию выйгрыша не даст.
Если хотите использовать оптимизацию необходимо пересобрать FCL и LCL т.е. fpc и lazarus.

p.s. Именно отладочная информация имеет такой большой объём.

Добавлено спустя 3 минуты 37 секунд:
Офф топ: Извиняюсь :wink:

Лохматый
Я по лохматей буду. У меня длина волос ниже лопаток :wink:
п.с. Привет Краснодару!!!
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Как уменьшить размер собранного exe?

Сообщение Logo » 29.10.2009 18:26:34

Verx0Laz
А ты о чем? :roll:
Почему? Почему?? Почему??? - Потому, что у дядек денег много и наглости тоже с избытком. Потому и началось, что убогая MsDOS вытеснила изящную CP-M, а потом все продолжилось ...

И вообще, пора в Lazarus интегрировать C/C++, Shell, HTML, PHP, Python...
Мысль такая появилась, когда вернулся на Netbeans, - отодвинул его на потом, времени нету ждать пока ему что-то дойдет.

Лохматый
>Надо перекомпилить FreePascal (2.2.4) и Lazarus (0.9.28)?

Обязательно!!!
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Как уменьшить размер собранного exe?

Сообщение Лохматый » 29.10.2009 21:19:54

Logo писал(а):Лохматый
>Надо перекомпилить FreePascal (2.2.4) и Lazarus (0.9.28)?

Обязательно!!!


Я эта... Дико извиняюсь, ибо последний раз движуха в теме прикладного программирования у меня была около 5 лет назад, а так я подрабатывал web-программированием, где все несколько проще... :roll: Так вот, можно как-нить в двух-трех словах описать, что КОНКРЕТНО надо сделать, чтобы достичь этой цели? Lazarus, я так понимаю, надо просто пересобрать через "Сервис" -> "Cобрать Lazarus", возможно что-то указав в "Параметрах сборки Lazarus...", а как это проделать с FP?
Аватара пользователя
Лохматый
незнакомец
 
Сообщения: 3
Зарегистрирован: 25.10.2009 20:32:52
Откуда: Краснодар

Re: Как уменьшить размер собранного exe?

Сообщение Logo » 29.10.2009 22:44:52

Заходим в каталог с исходниками fpc и выполняэм команду make:
make clean all PP=[путь к компилятору] COMPILER_OPTIONS="-O3 -Xs -XX -CX"
у меня, в Linux, это выглядит так:
Код: Выделить всё
make clean all PP=/usr/local/lib/fpc/2.3.1/ppcx64 COMPILER_OPTIONS="-O3 -Xs -XX -CX"

После успешной компиляции, инсталлируем новую сборку:
Код: Выделить всё
make install PP=/usr/local/lib/fpc/2.3.1/ppcx64

В *nix системах, предварительно войдите пользователем root

В Lazarus в меню Tools>Configure "Build Lazarus" (самое нижнее пока), открываем окно конфигурации.
В открытом окне Configure "Build Lazarus", переходим на вкладку Advanset Build Options
В Поле Options пишем -O3 -Xs -XX -CX
Выставляем галочку Clean All (чтобы все почистило и создало по новому)
Жмем на кнопку Build

После успешной комптляции можно делать приложения с нормальным размером, но ниже 1.2-1.3 Мб. уже технологически не возможно получить, хотя при разростании проекта, размер будет расти не сильно.

Для настройки компиляции приложения, заходим в диалог параметров компилятора, Меню Project>Compiler Options, В диалоге переходим на вкладку Code и ставим галочку на:
Smart Linkable (--CX)
Optimizations: Level 3 (-O3)
Затем переходим на вкладку Linking и:
Debugging: Снимаем все галочки, можно оставить (-Xs) (-Xg)
Link Style: Вы ставляем (-XX)
Применяем все и компилируем свое приложение.

Могут быть некоторые частные отличия, но я старался подогнать к более стандартной ситуации.
Например у вас могут быть прописаны пути к fpc и тогда не нужно в make указывать путь к компилятору. Но это полезно практиковать, так-как со временем возникает потребность в нескольких компиляторах и путь к ним приходится указывать принудительно.
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Как уменьшить размер собранного exe?

Сообщение betatester » 30.10.2009 13:26:34

1. Картинки хранить в виде png. Вставлять их утилитой lazres. Или вообще - отдельно на диске и загружать с диска динамически.
2. Пройтись по секциям Uses и выбросить все ненужное.
3. Если размер важен - перейти на программирование в голом GTK+ или в иных библиотеках, в зависимости от платформы. Результат - уменьшение размера в 7-8 раз.
4. Оптимизация реально дает результат, но незначительный - порядка 10-15% размера бинарника.

Иных методов нету.
ЗЫ: Исправил. :wink:
Последний раз редактировалось betatester 30.10.2009 14:13:08, всего редактировалось 2 раз(а).
betatester
постоялец
 
Сообщения: 276
Зарегистрирован: 27.04.2007 22:21:45

Re: Как уменьшить размер собранного exe?

Сообщение ViTality » 30.10.2009 13:48:30

betatester писал(а):2. Пройтись по секциям Users и выбросить все ненужное.

очепяточка... Uses
ViTality
постоялец
 
Сообщения: 308
Зарегистрирован: 05.10.2007 15:12:02

Пред.След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 6

Рейтинг@Mail.ru