Lazarus
02.05.2005 Сергей Смирнов
Маленькие хитрости при работе в Lazarus
Уменьшение размера exe-файла
Когда я впервые взглянул на размер
исполняемого файла,
скомпилированного с помощью Lazarus, то был немало удивлён его
исполинским размером. Это было давно, однако в текущей версии проблема
только усугубилась. Проект из пары не слишком сложных форм с
сотней-другой строк кода приводит к генерации исполняемого файла,
размер которого превышает 6 Мб.
В общем-то, в процессе работы над проектом
это не слишком напрягает,
но когда надо продемонстрировать результат заказчику, могут возникнуть
осложнения. Если это огромная система с десятками форм и мегабайтами
кода, то несколько завышенный размер приложения только придаст ему
значительности. Иначе, сами понимаете, в Вашей компетентности могут
усомниться.
Бороться с этим совсем не сложно. В
комплекте с компилятором имеется
набор разных замечательных утилит. Среди них есть две, специально
предназначенные для нашего случая. Это strip и upx. Первая из них
удаляет из файла программы всю лишнюю информацию, вторая - подвергает
файл компрессии. Для простоты применения скопируем обе утилиты в
каталог с нашим раздутым exe-файлом. Этого можно не делать, если путь к
исполняемым файлам компилятора Вы поместили в переменную окружения PATH
(что я очень рекомендую проделать). Теперь запустим их в DOS-окне
последовательно, указав имя файла в качестве параметра:
strip myhuge.exe
upx myhuge.exe
Совсем уж ленивые могут проделать тоже самое
в проводнике Windows с
помощью drag-and-drop'а. Вообще говоря, у обеих утилит есть различные
параметры запуска, но и по-умолчанию они справляются с задачей на
отлично, уменьшая размер примерно в 3 раза каждая. Мой тестовый проект
"похудел" с 6 Мб до 470 кб. Сам Lazarus можно сократить таким путём с
примерно 20 Мб до менее чем двух.
Только не забывайте, что в Windows программа
, обработанная upx,
будет загружена в память дважды: в упакованном состоянии и в
распакованном, рабочем состоянии.
Что делать, если Вы нашли ошибку в FCL?
Странный вопрос. Конечно-же исправить! Но не
торопитесь праздновать.
Чтобы Ваши исправления вступили в силу, придётся перекомпилировать FCL.
Звучит пугающе, но на самом деле это просто. Во-первых, нет смысла
перекомпилировать всю FCL. Во-вторых, Вам надо будет всего лишь
выполнить 2 простые команды. Сначала запустите сеанс MS DOS (или
консоль Linux) и перейдите в каталог той части FCL, где вы вносили
изменения (например \lazarus\fpcsrc\fcl\db). Теперь просто наберите в
командной строке
make
и нажмите ввод. Это не сработает, если путь
к исполняемым файлам
компилятора Free Pascal не находится в переменной PATH. Заметьте также,
что если у Вас есть другая утилита make и путь к ней в переменной PATH
указан раньше, то проблем не миновать. Если указанные симптомы имеют
место и ничего нельзя сделать, то в крайнем случае можно запустить make
с указанием полного пути:
C:\lazarus\pp\bin\i386-win32\make
Что же произойдёт? В каждом каталоге
исходников FCL присутствует
специальный файл с подробным описанием того, как эти исходники надо
компилировать. Когда Вы запускаете утилиту make из такого каталога, она
читает этот файл и производит необходимые вызовы компилятора.
Результаты его работы будут хорошо видны на экране в виде быстро
бегущих строчек результатов компиляции. Если Вы не получили сообщение
об ошибке, то снова запустите make, но уже с параметром:
make install
Эта команда перенесёт скомпилированные
модули в то место, где по её
информации их ожидает найти FPC. Обычно это место - каталог
"C:\pp\units\i386-win32\fcl", однако в нашем случае корневой каталог
компилятора не "C:\pp\", а "C:\lazarus\pp". В Linux такой проблемы,
скорее всего, не возникнет. В Windows поступим предельно бесхитростно:
просто скопируем файлы из "C:\pp\units\i386-win32\fcl" в
"C:\lazarus\pp\units\i386-win32\fcl".
Теперь хорошо-бы перекомпилировать и сам
Lazarus. Если внесённые
Вами исправления привели к изменению интерфейса каких-либо классов FCL,
то это придётся сделать обязательно.
|