Как уменьшить размер программы в Lazarus

Если создать простое приложение «Hello, world!» на Lazarus (описанное в предыдущей статье), то его размер будет достаточно велик для такой простейшей программы — порядка 15 МБ. Почему бинарные файлы, созданные в Lazarus такие большие? Давайте разберемся.

Во-первых, с настройками по-умолчанию, в бинарный файл помещается отладочная информация, позволяющая проводить дебаг и устанавливать точки останова программы.

Также стоит отметить, что в полученную программу «Hello, world!»  включено множество возможностей, таких как:

  • практически все виджеты Lazarus Component Library (LCL)
  • Все Runtime библиотеки Free Pascal
  • работа с XML
  • библиотеки для обработки файлов рисунков типа png, bmp и ico

Это делает размер приложения довольно большим.

Начальный размер исполняемого файла Lazarus велик, однако растет в дальнейшем довольно медленно.

Итак, основной путь уменьшения размера получаемого файла — настройка параметров компиляции.

1. Проект | Параметры прокета | Генерация кода | Умная компоновка (-CX) -> Поставить галочку

lazinst014

2. Проект | Параметры прокета | Компоновка | Выдавать номера строк в ошибках времени выполнения (-gl) -> Убрать галочку

3. Проект | Параметры прокета | Компоновка | Использовать внешний файл отладочных символов GDB (-Xs) -> Поставить галочку

4. Проект | Параметры прокета | Компоновка | Умная компоновка (-XX) -> Поставить галочку

lazinst013

Кроме того, можно поставить галочку «использовать текущие параметры по умолчанию для новых проектов» и Lazarus запомнит эти настройки.

Проведя настройки и скомпилировав приложение снова, мы увидим, что размер его сократился с 14,5 МБ до 1,62 МБ что вполне вполне допустимо, учитывая что размер уже не будет расти слишком быстро.

Для того чтобы быть уверенным, что отладочная информация не попала в исполняемый файл можно воспользоваться утилитой «strip» для ее удаления. Она находится в каталоге Lazarus’а:

c:\lazarus\fpc\2.6.0\bin\i386-win32\strip.exe

Пример использования:

strip --strip-all <путь к исполняемому файлу>

Данная процедура вырежет всю отладочную информацию из исполняемого файла, если она там оказалась.

Ну и в заключение, для желающих получить особо компактное приложение, можно воспользоваться утилитой UPX или аналогом для сжатия самого исполняемого файла. Следует, конечно сказать, что у этого метода есть свои достоинства и недостатки. Не буду здесь перечислять их все скажу лишь о главных.

  • размер исполняемого файла уменьшается в 2-3 раза и распаковка происходит незаметно для пользователя, а многие пользователи обращают внимание на размер программы.
  • Сжатые UPX программы многие антивирусы довольно часто воспринимают как вредоносные программы.

Тем не менее, если воспользоваться упаковщиком в нашем случае со следующими параметрами:

upx.exe --best --lzma project1.exe

размер нашей программы сократиться до 551 КБ.

Надеюсь теперь размер получаемого приложения Вас не отпугнет.

 

One comment to this article