Конференция "FreePascal" » Дублировать не буду - вопрос по ссылке [Win32]
 
  • savva © (25.03.04 16:55) [0]
  • PVOzerski © (25.03.04 17:17) [1]
    >Какие параметры для компилятора 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.

    А еще есть опции оптимизации...
  • PVOzerski © (25.03.04 17:19) [2]
    Забыл добавить о расширениях obj-файлов:
    .o для 1.1 и выше, платформо-зависимые (.ow для win32) для более ранних.
  • PVOzerski © (25.03.04 17:21) [3]
    А еще есть GNU-утилита strip (stripw в ранних дистрибутивах для win32), которая отрезает debug information от готовых приложений.
 
Конференция "FreePascal" » Дублировать не буду - вопрос по ссылке [Win32]
Есть новые Нет новых   [118604   +25][b:0][p:0]