Страница 1 из 1

FPC позволяет менять системную библиотеку?

СообщениеДобавлено: 08.12.2010 08:22:03
Celestia
Здравствуйте! Мне сказали что FPC позволяет менять системную библиотеки (kernel32, user32...), в том числе на практически полное их отсутствие, я хотел узнать правда ли это, если да, то как это реализовать? Мне нужно просто сделать так чтобы при запуске моей программы управление сразу передавалось на мой код begin ... end
Спасибо!

Re: FPC позволяет менять системную библиотеку?

СообщениеДобавлено: 08.12.2010 14:05:27
Kitayets
задача не понятна.

скорее всего то что вы хотите невозможно. такое было возможно во времена DOS, в современных ОС всеми процессами управляет ядро - выделяются ресурсы, адресное пространство, стек, происходит поиск и подключение библиотек, к каждой программе присоединяется некий "пролог", загружаются ресурсы, код, данные, и т.д.. таким образом с момента "запуска" программы через некий интерфейс ОС (командная строка или explorer), до момента входа в блок begin.. end. происходит много чего и выполняется много кода, в том числе и из библиотек kernel32, user32... т.к. эти библиотеки суть интерфейс к ядру ОС Windows. и это поведение не зависит от среды разработки. попробуйте запустить свою программу в oledbg и многое (возможно) станет для Вас очевидно.

Re: FPC позволяет менять системную библиотеку?

СообщениеДобавлено: 12.12.2010 12:15:24
bw
Вам нужно переписать system.pp (и может 1-2 других системных модуля, в зависимости от целевой ОС и от версии компилятора) и скомпилировать его без использования RTL (есть там ключик у компилятора, не помню какой). Далее, при сборке приложения/библиотеки используется именно этот модуль (надо разобраться с путями, что бы брался ваш, а не стандартный). Можете посмотреть как реализован RTL для одной из множества ОСей (и делать по примеру). Минимальный такой системный модуль может в десяток другой строк уложиться. Но... у вас не будет не только WriteLn, но так же поддержки строк, вещественных чисел и очень много другого, включая управление кучей (выделение и освобождение памяти), ибо всё это реализовано в RTL (system.pp), а не магическим образом добавляется компилятором в результирующий бинарник.

p.s. Зависимость от системы контролируется полностью, я делал RTL для KolibriOS, но со сборкой в PE, никаких намёков на win32 в коде не сохранилась и проблем со сборкой и исполнением приложений не возникало.

..bw

Re: FPC позволяет менять системную библиотеку?

СообщениеДобавлено: 12.12.2010 17:31:19
Иван Шихалев
bw
А какой минимум нужно реализовать в собственном System, чтобы скомпилировалось?

Re: FPC позволяет менять системную библиотеку?

СообщениеДобавлено: 14.12.2010 00:36:21
*vmr
C FPC такими извращениями не занимался, но с DCC, действительно можно выкинуть все лишнее и впихнуть в 478 БАЙТ (!!!)
http://xproger.mentalx.org/old/?id=1&pa ... delphi_min

Re: FPC позволяет менять системную библиотеку?

СообщениеДобавлено: 14.12.2010 04:16:30
Verx0Laz
Celestia, тебе только-что ответили на твой вопрос, но, судя по формулировке твоего вопроса, тот, кто тебе его подсказал, врядли рассчитывал на то, что ответ существует :)))) Прикинь, а ответ есть :))

Re: FPC позволяет менять системную библиотеку?

СообщениеДобавлено: 15.12.2010 15:31:19
bw
> А какой минимум нужно реализовать в собственном System, чтобы скомпилировалось?

Это вариант для Linux x86_64. Для i386 нужно заменить prt0.as (он был взят мной, без изменений, из сорцев RTL 2.2.4).
Это такой минимум, что даже модули не будут инициализироваться, насколько я понимаю.
Для win32 вместо prt0.as нужно использовать sysinitpas.pp. Собственно я так и работал когда-то, а вот для Linux пришлось разбираться вновь.

..bw