FreePascal

High-level languages programming questions
  • Для стека как показывает практика достаточно 4 кб (по крайней мере для ассемблерных программ) и размещается он за пределами бинарника. Получается с данными в программе, либо с кодом в компиляторе, либо с кодом в преобразователе что-то не то.
  • Кому лень искать, я нагуглил исходники 2.2.0

    http://ignum.dl.sourceforge.net/project ... rce.tar.gz

    Сам FPC потом куданить сброшу.
    Нуб обыкновенный
    Image
  • Апну я данную темку, наконец дошли но нее руки.

    Собственно, итого - вариант кросс-компиляции Паскаля работает, хотя не слишком просто его запустить.
    В теории, на svn лежит RTL, но она просто так не собирается. Потому тут выкладываю готовую RTL в приложении и инструкцию.
    Инструкция для пользователя Win, но разницы с Lin никакой, кроме расширения скрипта сборки.

    1.На sourceforge скачиваем компилятор старой версии 2.2.2 для Win32 (Linux-32)
    Это принципиально, т.к. более новая RTL (даже 2.2.4) несовместима с портом RTL для Колибри.
    Предположим, версия установлена как у меня в D:\_bin\FPC222

    2. Настраиваем пути к D:\_bin\FPC222

    3. Переименовываем каталог D:\_bin\FPC222\units\i386-win32\rtl , поскольку Колибри RTL хочет именно туда.
    А он еще пригодится, если нужно будет этим же компилятором собирать Win32_приложения, например exe2kos

    4. Распаковываем приложенный архив RTL поверх паскаля. в архиве 2 утилиты - exe2kos и kpack

    5. Всё. Смотрим вызов компилятора в батнике build_sample.bat, там должно быть что то вроде
    set KFPCDIR=D:\_bin\FPC222
    set FPCDIR=D:\_bin\FPC222
    fpc -Twin32 sample.pp
    kpack sample.exe sample.kex

    Как вариант, в батнике build.bat вызов fpcmake для готового makefile для проектов посложнее
    Attachments
    FPC222rtl4KOS.7z (657.85 KiB)
    Downloaded 465 times
    Last edited by Siemargl on Wed Sep 26, 2018 7:48 pm, edited 1 time in total.
  • Теперь инструкция по компиляции RTL.
    Поскольку она несовершенна и может потребовать пофиксить какие либо баги или добавить недостающие функции.
    Кроме того, возможно сюда добавить наработки из KolibriOS.lib для Delphi.

    1. В исходниках на SVN есть небольшие ошибки (я в душе не чаю, как работает автосборка, потому их коммитить пока не буду, чтобы не сломать). Fix под спойлером
    Spoiler:===================================================================
    --- kos_def.inc (revision 7375)
    +++ kos_def.inc (working copy)
    @@ -113,3 +113,10 @@
    VK_F10 = 121;
    VK_F11 = 122;
    VK_F12 = 123;
    +
    +/// siemargl add
    +const
    + ExtensionSeparator = '.';
    + AllowDirectorySeparators : set of char = ['/'];
    + AllowDriveSeparators : set of char = [];
    +
    Index: system.pp
    ===================================================================
    --- system.pp (revision 7375)
    +++ system.pp (working copy)
    @@ -19,6 +19,10 @@
    MaxExitCode = 65535;
    MaxPathLen = 512;

    + InitialStkLen = 4096; /// siemargl
    +
    +
    +
    UnusedHandle : THandle = -1;
    StdInputHandle : THandle = 0;
    StdOutputHandle: THandle = 0;
    Index: sysutils.pp
    ===================================================================
    --- sysutils.pp (revision 7375)
    +++ sysutils.pp (working copy)
    @@ -162,7 +162,7 @@
    ReleaseFileRecord(Handle);
    end;

    -function FileTruncate(Handle: THandle; Size: Longint): Boolean;
    +function FileTruncate(Handle: THandle; Size: Int64): Boolean;
    begin
    Result := False;
    end;
    ===================================================================
    --- build.bat (revision 7375)
    +++ build.bat (working copy)
    @@ -1,3 +1,4 @@
    @echo off
    +set FPCDIR=D:\_bin\FPC222\fpcbuild-2.2.2\fpcsrc
    fpcmake -Twin32
    make
    \ No newline at end of file
    2. Скачиваем файл исходников fpcbuild-2.2.2.zip из каталога https://sourceforge.net/projects/freepa ... rce/2.2.2/
    и распаковываем куда укажем в build.bat RTL Kolibri

    3. Компилируем RTL с помощью fp/rtl/build.bat

    4. папочку fp/units/rtl копируем поверх D:\_bin\FPC\units\i386-win32\rtl

    5. при необходимости скомпилировать fp/utils/exe2kos,
    создаем сначала руками папку fp/bin - туда попадет exe-шник (или он станет файлом bin. если не создать)

    и не забываем подсунуть rtl от win32
  • Неплохо и на форуме freepascal.ru обновить информацию в
    Этой теме
  • Kopa wrote:Неплохо и на форуме freepascal.ru обновить информацию в
    Этой теме
    Чего там обновлять, нового то ничего не появилось.

    И такая непереносимость даже между минорными субверсиями это грустно - плохой код RTL в FPC.
  • Как под КолибриОС компилировать программу, написанную на FreePascal в Linux или WIndows?
  • ConLenov wrote:Как под КолибриОС компилировать программу, написанную на FreePascal в Linux или WIndows?
    Под колибри FreePascal компилятор не портирован. Нужно использовать кросс-компиляцию.
    Last edited by Leency on Thu Apr 09, 2020 3:19 am, edited 1 time in total.
    Из хаоса в космос
  • Где должен находится файл "example.pp" для успешной компиляции?
    Attachments
    паскаль.PNG
    паскаль.PNG (43.43 KiB)
    Viewed 12933 times
  • Сложно сказать, ты читал эту тему, особенно сообщения на этой странице?
    Из хаоса в космос
  • Я переименовал example.pp в sample.pp Компиляция в формате kex вроде прошла успешно. Но почему kex-файлы не запускаются в Колибри? (я использовал build_sample) C lrl.pp я делал то же самое
  • exe2kos есть, используешь?
    Из хаоса в космос
  • bw wrote:> после заголовка километровое пустое место идет
    Ну как я и обещал, какая-то секция, возможно стэк. Хотя могу врать, забыл всё нахрен.
    Это наверняка стандартная база $00400000. Чтобы уменьшить размер, нужно воспользоваться PE Tool:

    Code: Select all

    pet -strip -trunc -rebase 0 -osver 0.7 -into my.exe
    
  • Нашел вот это(папка)?
    Это порт fpc для колибри. Пусть может и не допортирован, но на форуме упоминания этого не видел :shock: !
    Он собирает примеры отсюда.

    Как смешно получилось - кросскомпиляцию завести не удалось, нашел кое какой порт - завелось. Добавил в kolibri de
  • Who is online

    Users browsing this forum: No registered users and 4 guests