Page 4 of 8

Re: FreePascal

Posted: Fri Jul 22, 2011 12:54 am
by bw
> после заголовка километровое пустое место идет
Ну как я и обещал, какая-то секция, возможно стэк. Хотя могу врать, забыл всё нахрен.

Про файлы. В играх есть lrl. В develop/fp/media есть fliplay.
И не бойся лазить по исходникам :-).

..bw

Re: FreePascal

Posted: Fri Jul 22, 2011 7:26 am
by Mario
Для стека как показывает практика достаточно 4 кб (по крайней мере для ассемблерных программ) и размещается он за пределами бинарника. Получается с данными в программе, либо с кодом в компиляторе, либо с кодом в преобразователе что-то не то.

Re: FreePascal

Posted: Sat Jul 30, 2011 3:07 pm
by mozGa_net
Кому лень искать, я нагуглил исходники 2.2.0

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

Сам FPC потом куданить сброшу.

Re: FreePascal

Posted: Wed Sep 26, 2018 7:22 pm
by Siemargl
Апну я данную темку, наконец дошли но нее руки.

Собственно, итого - вариант кросс-компиляции Паскаля работает, хотя не слишком просто его запустить.
В теории, на 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 для проектов посложнее

Re: FreePascal

Posted: Wed Sep 26, 2018 7:42 pm
by Siemargl
Теперь инструкция по компиляции 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

Re: FreePascal

Posted: Fri Sep 28, 2018 3:38 pm
by Kopa
Неплохо и на форуме freepascal.ru обновить информацию в
Этой теме

Re: FreePascal

Posted: Fri Sep 28, 2018 10:51 pm
by Siemargl
Kopa wrote:Неплохо и на форуме freepascal.ru обновить информацию в
Этой теме
Чего там обновлять, нового то ничего не появилось.

И такая непереносимость даже между минорными субверсиями это грустно - плохой код RTL в FPC.

Re: FreePascal

Posted: Wed Apr 08, 2020 12:16 pm
by ConLenov
Как под КолибриОС компилировать программу, написанную на FreePascal в Linux или WIndows?

Re: FreePascal

Posted: Wed Apr 08, 2020 3:07 pm
by Leency
ConLenov wrote:Как под КолибриОС компилировать программу, написанную на FreePascal в Linux или WIndows?
Под колибри FreePascal компилятор не портирован. Нужно использовать кросс-компиляцию.

Re: FreePascal

Posted: Wed Apr 08, 2020 7:58 pm
by ConLenov
Где должен находится файл "example.pp" для успешной компиляции?

Re: FreePascal

Posted: Thu Apr 09, 2020 3:23 am
by Leency
Сложно сказать, ты читал эту тему, особенно сообщения на этой странице?

Re: FreePascal

Posted: Fri Apr 10, 2020 11:28 am
by ConLenov
Я переименовал example.pp в sample.pp Компиляция в формате kex вроде прошла успешно. Но почему kex-файлы не запускаются в Колибри? (я использовал build_sample) C lrl.pp я делал то же самое

Re: FreePascal

Posted: Fri Apr 10, 2020 1:28 pm
by Leency
exe2kos есть, используешь?

Re: FreePascal

Posted: Tue Jun 23, 2020 1:32 pm
by Freeman
bw wrote:> после заголовка километровое пустое место идет
Ну как я и обещал, какая-то секция, возможно стэк. Хотя могу врать, забыл всё нахрен.
Это наверняка стандартная база $00400000. Чтобы уменьшить размер, нужно воспользоваться PE Tool:

Code: Select all

pet -strip -trunc -rebase 0 -osver 0.7 -into my.exe

Re: FreePascal

Posted: Mon Oct 05, 2020 11:20 am
by maxcodehack
Нашел вот это(папка)?
Это порт fpc для колибри. Пусть может и не допортирован, но на форуме упоминания этого не видел :shock: !
Он собирает примеры отсюда.

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