Минимальная сборка FPC

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Минимальная сборка FPC

Сообщение hinst » 05.07.2010 19:25:01

Предположим, нужно что-то скомпилировать фрипаскалем на компьютере у случайного юзверя. Но при этом нельзя заставлять его устанавливать фрипаскаль. Подскажите пожалуйста, каков минимальный набор файлов компилятора FPC, могущий работать. я подозреваю, что исп. файл fpc и ещё линкер ld необходимы. (правда, линкер у многих есть, но кто ж его знает...). Может быть, есть какая-нибудь облегчённая сборка дистрибутива FPC? Почему-то мне хочется, чтобы такой минимальный набор всего необходимого для сборки не превысил 10 мегабайт. ессно надо ещё system.ppu, system.p, system.compiled, мб ещё что-то. Вообщем, я слабо представляю, что именно надо, поэтому и решил спросить.
Заранее спасибо.
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Минимальная сборка FPC

Сообщение Nik » 05.07.2010 19:49:38

Самый простой путь - эксперимент: сделать отдельную установку FPC и постепенно удалять из неё файлы/папки (после каждого удаления для проверки компилировать какой-нибудь приличный проектик).
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Минимальная сборка FPC

Сообщение скалогрыз » 05.07.2010 20:12:19

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 при этом совсем не обязательно с собой таскать.

все модули rtl можно найти, посмотрев fpc.cfg. примерно такая строчка как бы намекает, где искать модули rtl:
-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/rtl

ещё с fpc идут утилиты, вроде fpcres (при компиляции ресурсов). Их использование не строго обязательно, но мало ли прижучит ;)
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Минимальная сборка FPC

Сообщение hinst » 05.07.2010 20:34:05

неутешительно. собранный rtl нааерняка жирно весит
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Минимальная сборка FPC

Сообщение Nik » 05.07.2010 20:47:09

В RTL модули привязаны к конкретным целевым платформам. Наверняка модули для платформ, которые вам не нужны, можно убрать.
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Минимальная сборка FPC

Сообщение скалогрыз » 05.07.2010 23:56:41

hinst писал(а):неутешительно. собранный rtl нааерняка жирно весит

fpc 2.5.1, размеры папки units/rtl
i386-win32 - 12 mb
i386-linux - 15 mb
i386-darwin - 5.9 mb
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Минимальная сборка FPC

Сообщение bw » 06.07.2010 10:28:54

Зависит от целей и способов. Для сборки под виндой и для винды достаточно ppc386. Можно пересобрать выкинув лишнее.
RTL, нужен ли он вообще -- читать выше. Если нужен -- читать выше (соберите свой, ограничьте тот что из коробки).

p.s. В конце концов, если очень хочется то научите брать компилятор модули из архива. Вообщем, на эти разговоры ушло чуть ли больше времени чем требуется на сборку компилятора под себя.

..bw
Аватара пользователя
bw
постоялец
 
Сообщения: 359
Зарегистрирован: 01.12.2005 11:36:23
Откуда: Усть-Илимск

Re: Минимальная сборка FPC

Сообщение hinst » 06.07.2010 11:43:34

то есть я правильно понял, что всё что нужно для сборки для винды - это исп. файл ppc386 и юниты из папки rtl???
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Минимальная сборка FPC

Сообщение Vadim » 06.07.2010 12:12:53

hinst писал(а):и юниты из папки rtl???

Не все, а только те, которые используются программой.
Минимальный набор модулей уже обсуждался на форуме. Где - не помню, поиск поможет. ;)
В результате недолгого эксперимента самостоятельно можно выяснить, что для сборки программы типа "hello world", нужен такой набор файлов:
fpintres.o
fpintres.ppu
hello.pas
ppc386.exe
sysinitpas.o
sysinitpas.ppu
system.o
system.ppu

Без них компилятор работать вообще не будет.
Остальные модули нужны только если они используются в программе, т.е. если указаны в строке USES самой программы или в используемых ею модулях.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Минимальная сборка FPC

Сообщение bw » 06.07.2010 13:09:45

> Без них компилятор работать вообще не будет.
Поспорим на деньги? (Я про модули, см. ключ -Us.)
system и sysinitpas не из воздуха и за счёт магии берутся, они так же собираются, тем же компилятором и в тех же условиях что и весь остальной код.

p.s. Вот тут могу ошибаться, но .o не нужны для виндовой сборки с использованием (а он по умолчанию) встроенного линковщика.

p.p.s. Простой рецепт (без перекомпиляции fpc и системных модулей): ложим ppc386.exe, system.ppu и sysinit.ppu (про fpintres не в курсе, когда разбирался во всём этом, он не был нужен) в одно место и используем с ключом -n. Но я бы сделал свою сборку компилятора вырезал бы лишние платформы, минимизировал бы влияние среды, брал бы модули из архива и т.д..

..bw
Аватара пользователя
bw
постоялец
 
Сообщения: 359
Зарегистрирован: 01.12.2005 11:36:23
Откуда: Усть-Илимск

Re: Минимальная сборка FPC

Сообщение Vadim » 06.07.2010 13:46:24

bw писал(а):Поспорим на деньги?

Я не буду спорить ;) , т.к. уверен, что речь у товарища hinst идёт о сборке приложений, которые не являются компилятором или модулем типа System. Именно на таком предположении мой ответ и основан.
bw писал(а):p.s. Вот тут могу ошибаться, но .o не нужны для виндовой сборки с использованием (а он по умолчанию) встроенного линковщика.

Если Вы ещё раз всмотритесь в приведённый список файлов, то внешнего линковщика там не увидите. Ergo, используется внутренний линковщик. Я специально обнулил переменную PATH, чтобы быть убеждённым, что не используется ни один внешний, по отношению к текущему каталогу, файл. Как результат - без файлов .o линковщик меня обругал, в процессе линьки, неизвестным символом. :)
bw писал(а):p.p.s. Простой рецепт

Дружище, я как раз этим рецептом и пользовался. ;) Поэтому в качестве обязательных файлов для сборки "hello world" оказались именно эти файлы. Если выкинуть любой из них - "hello world" не собирётся с той или иной ошибкой.

Про перекомпиляцию компилятора ничего сказать не могу - как то оно от меня слишком далеко... :)
Могу только сказать, что если подцепить к исходнику программы исходник ресурсов (.rc), то он тоже откомпилируется. Видимо для этого fpintres и требуется. Если знаете, как его отключить в файле конфигурации - напишите, hinst Вам будет, вне всякого сомнения, благодарен. ;)

Добавлено спустя 12 минут:
hinst писал(а):Почему-то мне хочется, чтобы такой минимальный набор всего необходимого для сборки не превысил 10 мегабайт.

В моём варианте компилятора, минимальный набор весит 1,9 МБ. Так что в комплект ещё можно напихать всяких разных поросят - до 10 МБ. ;)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru