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

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

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

Аватара пользователя
Pirr
новенький
Сообщения: 21
Зарегистрирован: 21.10.2009 11:50:46

Сообщение Pirr »

Пожалуста объясните как скомпилировать FPC под Windows с параметрами -O3 -Xs -XX -CX
-----
Всё, спасибо разобрался. Прблема была в переменных среды окружения.
Последний раз редактировалось Pirr 30.10.2009 16:23:47, всего редактировалось 1 раз.
Logo
постоялец
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Сообщение Logo »

betatester писал(а):4. Оптимизация реально дает результат, но незначительный - порядка 10-15% размера бинарника.

Ну, с 5Мб до 1.3Мб, это сколько процентов будет? Это файлы с внешней отладочной информацией, strip уже им не помогает.
betatester
постоялец
Сообщения: 276
Зарегистрирован: 27.04.2007 22:21:45
Контактная информация:

Сообщение betatester »

Logo писал(а):
betatester писал(а):4. Оптимизация реально дает результат, но незначительный - порядка 10-15% размера бинарника.

Ну, с 5Мб до 1.3Мб, это сколько процентов будет? Это файлы с внешней отладочной информацией, strip уже им не помогает.

Не понял. У вас файл уменьшился с 5 до 1.3МБ за счет оптимизации? :lol: Вы ничего не путаете?
Мой проект - 18 тыс строк кода. Разница при включённой и выключенной оптимизации составляет ~20КБайт. Объем бинарника - ~300КБайт.

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

Сообщение Logo »

betatester
>Вы ничего не путаете?
Нет, не путаю. В данной ветке речь идет не о -О1 -О2 -О3, а о комплексном решении по уменьшению исполняемого файла.
Люди смотрят на десятки мегабайт и в шоке ищут, как это исправить, о такой оптимизации идет речь.

>Объем бинарника - ~300КБайт.
Причем почти весь размер занимает System. 18 тысяч строк для Объектного Паскаля, это не много.

>Включать отладочную информацию при глубокой оптимизации - занятие бессмысленное. Ибо ссылка на строку вашего исходника при оптимизации может быть не определена.
Вот и опишите людям это поподробнее, а мне оно не нужно.
betatester
постоялец
Сообщения: 276
Зарегистрирован: 27.04.2007 22:21:45
Контактная информация:

Сообщение betatester »

Logo писал(а):betatester
>Вы ничего не путаете?
Нет, не путаю. В данной ветке речь идет не о -О1 -О2 -О3, а о комплексном решении по уменьшению исполняемого файла.
Люди смотрят на десятки мегабайт и в шоке ищут, как это исправить, о такой оптимизации идет речь.
???
Еще раз, уточните пожалуйста, за счет чего размер бинарника уменьшился с 5 до 1.5Мб?

Logo писал(а):>Объем бинарника - ~300КБайт.
Причем почти весь размер занимает System. 18 тысяч строк для Объектного Паскаля, это не много.
Вы полагаете? У вас больше? :wink:
К слову - у меня System ВООБЩЕ НЕТ - пишу на чистом GTK2/LIBC/GLIB. :D

Logo писал(а):>Включать отладочную информацию при глубокой оптимизации - занятие бессмысленное. Ибо ссылка на строку вашего исходника при оптимизации может быть не определена.
Вот и опишите людям это поподробнее, а мне оно не нужно.
Оптимизация смешивает строки. Или вообще их нивелирует. В результате у вас случиться ошибка. А ссылка по номеру строки привет вас в никуда. :wink:
Logo
постоялец
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Сообщение Logo »

betatester писал(а):К слову - у меня System ВООБЩЕ НЕТ - пишу на чистом GTK2/LIBC/GLIB. :D

Угу, компилятора fpc тоже нет.

LIBC из комплекта fpc?

Добавлено спустя 2 минуты 46 секунд:
Я вот поискал, поискал и у меня нет System :roll: Наверное у нас FPC не ФПЦешный :shock:
Аватара пользователя
Лохматый
незнакомец
Сообщения: 3
Зарегистрирован: 25.10.2009 19:32:52
Откуда: Краснодар

Сообщение Лохматый »

Pirr писал(а):Всё, спасибо разобрался. Прблема была в переменных среды окружения.


Эм... А можно поподробнее?
betatester
постоялец
Сообщения: 276
Зарегистрирован: 27.04.2007 22:21:45
Контактная информация:

Сообщение betatester »

Logo писал(а):LIBC из комплекта fpc?
Нет. Все ручками. Все ссылки на SysUtils из соотв. библиотек fpc (GLIB2, библиотеки X11 и так далее) вычистил. Строковые переменные не использую вообще, только PChar.
Аватара пользователя
Pirr
новенький
Сообщения: 21
Зарегистрирован: 21.10.2009 11:50:46

Сообщение Pirr »

Лохматый писал(а):Эм... А можно поподробнее?

У меня на компьютере стоит куча всяких сред разработки и компиляторов, и на команду make реакция была непонятной, писало что нужен Makefile хотя он был в этом каталоге.
Пока не прописал в PATCH путь c:\lazarus\fpc\2.2.4\bin\i386-win32\ ничего не помогало.
----
И еще вопрос: что должно получится в результате компиляции?
Я скачал снапшот FPC 2.5.1 - он не собрался.
Попробовал перекомпилировать имеющуюся версию 2.2.4 с параметрами -O3 -XX -CX -Xs - компиляция прошла без ошибок, появилась папка с файлами c:\pp\units\i386-win32\rtl\ - и что с этим делать?
Logo
постоялец
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Сообщение Logo »

>появилась папка с файлами c:\pp\units\i386-win32\rtl\ - и что с этим делать?
make install

betatester
>Нет. Все ручками. Все ссылки на SysUtils из соотв. библиотек fpc (GLIB2, библиотеки X11 и так далее) вычистил. Строковые переменные не использую вообще, только PChar

Заманчиво.
PapaNT
постоялец
Сообщения: 167
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва

Сообщение PapaNT »

alexs писал(а):
Mr.Smart писал(а):Вот вот они современные программисты!

:lol:
Когда размер исходников твоей программы переваливает за десятки метров, кол-во форм - более 200-300 - то размер FCL/LCL - это уже копейки. Я не спорю - что оно странно выглядит для программы из 1-й формы. Но много ли действительно важных таких программ?

будешь смеяться, но большинство моих программ управляются параметрами командной строки или инишками. У них если вывод на экран идет, то только аварийныйх сообщений... Ну нет в них интерфеса в нормальном виде... Знаешь, но на них пока ни кто не жаловался ;)

Кстати, есть еще виртуал-паскаль с весьма хорошим оптимизатором готового кода, но он уже мертвый раритет...
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Для консольных утилит графические мордочки вобще не нужны. Логи - наше всё.
PapaNT
постоялец
Сообщения: 167
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва

Сообщение PapaNT »

на виртуал-паскале умудрялся писать консльные екзешники меньше 20 килобайт...
Kon.pasc
новенький
Сообщения: 26
Зарегистрирован: 31.10.2009 16:45:38

Сообщение Kon.pasc »

У меня на компьютере стоит куча всяких сред разработки и компиляторов, и на команду make реакция была непонятной, писало что нужен Makefile хотя он был в этом каталоге.
Пока не прописал в PATCH путь c:\lazarus\fpc\2.2.4\bin\i386-win32\ ничего не помогало.

Хм. А у меня пишет:

Код: Выделить всё

make clean all PP=c:\prog\fpc\2.3.1\bin\i386-win32\ppc386.exe COMPILER_OPTIONS="-O3 -Xs -XX -CX"
make: *** No rule to make target `clean'.  Stop.

на просто make all пишет соответственно

Код: Выделить всё

make: *** No rule to make target `all'.  Stop.

Куда копать? Как делфист я с make незнаком.
Аватара пользователя
Pirr
новенький
Сообщения: 21
Зарегистрирован: 21.10.2009 11:50:46

Сообщение Pirr »

Kon.pasc писал(а):Куда копать? Как делфист я с make незнаком.

У меня было примерно тоже самое, похоже что твоя система берет команду make из какогото другого компилятора.
Попробуй в PATCH убрать пути к другим средам\компиляторам, например QT, minGW, GCC и т.д.
Ответить