Минимальная сборка FPC
Модератор: Модераторы
Минимальная сборка FPC
Предположим, нужно что-то скомпилировать фрипаскалем на компьютере у случайного юзверя. Но при этом нельзя заставлять его устанавливать фрипаскаль. Подскажите пожалуйста, каков минимальный набор файлов компилятора FPC, могущий работать. я подозреваю, что исп. файл fpc и ещё линкер ld необходимы. (правда, линкер у многих есть, но кто ж его знает...). Может быть, есть какая-нибудь облегчённая сборка дистрибутива FPC? Почему-то мне хочется, чтобы такой минимальный набор всего необходимого для сборки не превысил 10 мегабайт. ессно надо ещё system.ppu, system.p, system.compiled, мб ещё что-то. Вообщем, я слабо представляю, что именно надо, поэтому и решил спросить.
Заранее спасибо.
Заранее спасибо.
hinst писал(а):Предположим, нужно что-то скомпилировать фрипаскалем на компьютере у случайного юзверя. Но при этом нельзя заставлять его устанавливать фрипаскаль. Подскажите пожалуйста, каков минимальный набор файлов компилятора FPC, могущий работать. я подозреваю, что исп. файл fpc и ещё линкер ld необходимы. (правда, линкер у многих есть, но кто ж его знает...). Может быть, есть какая-нибудь облегчённая сборка дистрибутива FPC? Почему-то мне хочется, чтобы такой минимальный набор всего необходимого для сборки не превысил 10 мегабайт. ессно надо ещё system.ppu, system.p, system.compiled, мб ещё что-то. Вообщем, я слабо представляю, что именно надо, поэтому и решил спросить.
Заранее спасибо.
Для Windows:
ppcXXX и собранный RTL.
Для Linux:
ppcXXX и собранный RTL.
ld + системные библиотеки, вроде crt0.o (ставяться с gnutools). Но системные библиотеки лучше НЕ таскать с собой, а ставить на каждую систему свои из соответствующих репозиториев
Для других:
ppcXXX и собранный RTL,
as, ld + системные библиотеки.
Добавить необходимые package по вкусу
все модули rtl можно найти, посмотрев fpc.cfg. примерно такая строчка как бы намекает, где искать модули rtl:
-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/rtl
ещё с fpc идут утилиты, вроде fpcres (при компиляции ресурсов). Их использование не строго обязательно, но мало ли прижучит
неутешительно. собранный rtl нааерняка жирно весит
hinst писал(а):неутешительно. собранный rtl нааерняка жирно весит
fpc 2.5.1, размеры папки units/rtl
i386-win32 - 12 mb
i386-linux - 15 mb
i386-darwin - 5.9 mb
- bw
- постоялец
- Сообщения: 359
- Зарегистрирован: 01.12.2005 10:36:23
- Откуда: Усть-Илимск
- Контактная информация:
Зависит от целей и способов. Для сборки под виндой и для винды достаточно ppc386. Можно пересобрать выкинув лишнее.
RTL, нужен ли он вообще -- читать выше. Если нужен -- читать выше (соберите свой, ограничьте тот что из коробки).
p.s. В конце концов, если очень хочется то научите брать компилятор модули из архива. Вообщем, на эти разговоры ушло чуть ли больше времени чем требуется на сборку компилятора под себя.
..bw
RTL, нужен ли он вообще -- читать выше. Если нужен -- читать выше (соберите свой, ограничьте тот что из коробки).
p.s. В конце концов, если очень хочется то научите брать компилятор модули из архива. Вообщем, на эти разговоры ушло чуть ли больше времени чем требуется на сборку компилятора под себя.
..bw
то есть я правильно понял, что всё что нужно для сборки для винды - это исп. файл ppc386 и юниты из папки rtl???
hinst писал(а):и юниты из папки rtl???
Не все, а только те, которые используются программой.
Минимальный набор модулей уже обсуждался на форуме. Где - не помню, поиск поможет.
В результате недолгого эксперимента самостоятельно можно выяснить, что для сборки программы типа "hello world", нужен такой набор файлов:
fpintres.o
fpintres.ppu
hello.pas
ppc386.exe
sysinitpas.o
sysinitpas.ppu
system.o
system.ppu
Без них компилятор работать вообще не будет.
Остальные модули нужны только если они используются в программе, т.е. если указаны в строке USES самой программы или в используемых ею модулях.
- bw
- постоялец
- Сообщения: 359
- Зарегистрирован: 01.12.2005 10:36:23
- Откуда: Усть-Илимск
- Контактная информация:
> Без них компилятор работать вообще не будет.
Поспорим на деньги? (Я про модули, см. ключ -Us.)
system и sysinitpas не из воздуха и за счёт магии берутся, они так же собираются, тем же компилятором и в тех же условиях что и весь остальной код.
p.s. Вот тут могу ошибаться, но .o не нужны для виндовой сборки с использованием (а он по умолчанию) встроенного линковщика.
p.p.s. Простой рецепт (без перекомпиляции fpc и системных модулей): ложим ppc386.exe, system.ppu и sysinit.ppu (про fpintres не в курсе, когда разбирался во всём этом, он не был нужен) в одно место и используем с ключом -n. Но я бы сделал свою сборку компилятора вырезал бы лишние платформы, минимизировал бы влияние среды, брал бы модули из архива и т.д..
..bw
Поспорим на деньги? (Я про модули, см. ключ -Us.)
system и sysinitpas не из воздуха и за счёт магии берутся, они так же собираются, тем же компилятором и в тех же условиях что и весь остальной код.
p.s. Вот тут могу ошибаться, но .o не нужны для виндовой сборки с использованием (а он по умолчанию) встроенного линковщика.
p.p.s. Простой рецепт (без перекомпиляции fpc и системных модулей): ложим ppc386.exe, system.ppu и sysinit.ppu (про fpintres не в курсе, когда разбирался во всём этом, он не был нужен) в одно место и используем с ключом -n. Но я бы сделал свою сборку компилятора вырезал бы лишние платформы, минимизировал бы влияние среды, брал бы модули из архива и т.д..
..bw
bw писал(а):Поспорим на деньги?
Я не буду спорить
bw писал(а):p.s. Вот тут могу ошибаться, но .o не нужны для виндовой сборки с использованием (а он по умолчанию) встроенного линковщика.
Если Вы ещё раз всмотритесь в приведённый список файлов, то внешнего линковщика там не увидите. Ergo, используется внутренний линковщик. Я специально обнулил переменную PATH, чтобы быть убеждённым, что не используется ни один внешний, по отношению к текущему каталогу, файл. Как результат - без файлов .o линковщик меня обругал, в процессе линьки, неизвестным символом.
bw писал(а):p.p.s. Простой рецепт
Дружище, я как раз этим рецептом и пользовался.
Про перекомпиляцию компилятора ничего сказать не могу - как то оно от меня слишком далеко...
Могу только сказать, что если подцепить к исходнику программы исходник ресурсов (.rc), то он тоже откомпилируется. Видимо для этого fpintres и требуется. Если знаете, как его отключить в файле конфигурации - напишите, hinst Вам будет, вне всякого сомнения, благодарен.
Добавлено спустя 12 минут:
hinst писал(а):Почему-то мне хочется, чтобы такой минимальный набор всего необходимого для сборки не превысил 10 мегабайт.
В моём варианте компилятора, минимальный набор весит 1,9 МБ. Так что в комплект ещё можно напихать всяких разных поросят - до 10 МБ.
