-
-
>Какие параметры для компилятора FPC надо задать, чтобы получить >приложение, идентичное (по размеру и данным при неизменном коде) >получаемому при компиляции из среды FPC. Выставляю параметры >соответственно галочкам в среде. >А то уже вторую неделю пытаюсь решит этот вопрос и все никак.
На размер приложения при одинаковом коде наиболее сильно влияют 2 вещи: 1) Что линкуется. По умолчанию модули (unit, program, library) компилируются в obj-файл и (для юнитов) интерфейсный файл с расширением .ppu (в 1.0.x и ранее расширения зависели от платформы, напр., ppw для win32). Однако можно задать компиляцию в статическую библиотеку - ключ -СХ или директива {$SMARTLINK ON} Тогда дополнительно будет создана библиотека с префиксом libp (lib для 1.0.x) и расширением .a (для 1.0.x расширения платформо-зависимы). Тогда если компилятор вызывается с ключом -XX, линкеру передаются имена не obj-файлов, а библиотек (если таковые есть). Это может приводить к выбрасыванию существенной части "мертвого" кода. 2) debug information. Чтобы не пришивалась к .exe, есть ключ -Xs. 3) win32: секция .reloc не создается в приложениях, подлежащих отладке, так как мешает дебаггеру. Для релиза, по кр. мере, dll-ей ее лучше оставлять. См. ключи -WR и -WN.
А еще есть опции оптимизации...
-
Забыл добавить о расширениях obj-файлов: .o для 1.1 и выше, платформо-зависимые (.ow для win32) для более ранних.
-
А еще есть GNU-утилита strip (stripw в ранних дистрибутивах для win32), которая отрезает debug information от готовых приложений.
|