копиляция без RTL

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

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

копиляция без RTL

Сообщение alexey_k » 30.03.2008 22:24:49

При попытке откомпелировать файл (не использующий стд. библиотеки), получаю сообщение

ppc386 -Rintel kernel.pas
kernel.pas(5,1) Fatal: Can't find unit System used by kernel
Fatal: Compilation aborted

т.е. не находит файл RTL-библиотеки System.o
есть-ли параметры для FPC, чтоб он не присобачивал RTL к моему коду?

...
ЗЫ

по-сути мне это не критично, просто хотел для себя составить небольшой набор утилит (LCC, FPC, LD, MAKE и ещё парочка) - умещается в пару-тройку Мб, чтоб не таскать кучу, ненужных мне, файлов вроде RTL и доп. утилит, а иметь при себе компиллер, линкер, make... ну вобщем самое необходимое...
alexey_k
незнакомец
 
Сообщения: 3
Зарегистрирован: 24.03.2008 13:58:38

Сообщение Sergei I. Gorelkin » 30.03.2008 23:39:57

Насколько я понимаю, обойтись вообще без модуля system невозможно. Но модуль system - это не вся RTL, а только малая часть.

Кроме того, можно попробовать скомпилировать вариант "для встраиваемых систем", имеющий минимум функциональности, и, соответственно, размера. Это управляется директивами условной компиляции вида FPC_HAS_FEATURE_xxx, например, FPC_HAS_FEATURE_ANSISTRINGS. Но как конкретно это делается, я не знаю.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение NXP » 31.03.2008 01:04:52

Попробуй компилировать каждый модуль отдельно.
После stipe-ром можно убрать из объектных файлов лишние инициализационные части,
ну соответственно скомпоновать вручную то, что требуется.
В теории должно сработать :D
Аватара пользователя
NXP
постоялец
 
Сообщения: 187
Зарегистрирован: 02.01.2008 16:11:56
Откуда: Воронеж

Сообщение bw » 31.03.2008 01:24:44

Попробуй использовать флаг -Us.
Хотя в таком случае врядли удастся собрать исполняемый файл, скорее всего, только модуль. Но для сборки RTL-заглушки или просто своего RTL этого достаточно.

p.s. Я использую этот флаг только для компиляции своего system.pp в модуль, все остальные модули RTL, например, objpas, sysinitpas (нужен при сборке PE, если я правильно помню), dynlibs и т.д., собираю как обычные модули. http://www.kolibrios.org/repos/programs ... /build.bat - скрипт для сборки конкретного RTL, правильнее использовать Makefile.fpc, но пока руки не дошли.

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


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

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

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

Рейтинг@Mail.ru