> после заголовка километровое пустое место идет
Ну как я и обещал, какая-то секция, возможно стэк. Хотя могу врать, забыл всё нахрен.
Про файлы. В играх есть lrl. В develop/fp/media есть fliplay.
И не бойся лазить по исходникам :-).
..bw
FreePascal
Для стека как показывает практика достаточно 4 кб (по крайней мере для ассемблерных программ) и размещается он за пределами бинарника. Получается с данными в программе, либо с кодом в компиляторе, либо с кодом в преобразователе что-то не то.
Кому лень искать, я нагуглил исходники 2.2.0
http://ignum.dl.sourceforge.net/project ... rce.tar.gz
Сам FPC потом куданить сброшу.
http://ignum.dl.sourceforge.net/project ... rce.tar.gz
Сам FPC потом куданить сброшу.
Нуб обыкновенный
Апну я данную темку, наконец дошли но нее руки.
Собственно, итого - вариант кросс-компиляции Паскаля работает, хотя не слишком просто его запустить.
В теории, на 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 для проектов посложнее
Собственно, итого - вариант кросс-компиляции Паскаля работает, хотя не слишком просто его запустить.
В теории, на 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 501 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 под спойлером
--- 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
Поскольку она несовершенна и может потребовать пофиксить какие либо баги или добавить недостающие функции.
Кроме того, возможно сюда добавить наработки из 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
и распаковываем куда укажем в 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?
Под колибри FreePascal компилятор не портирован. Нужно использовать кросс-компиляцию.ConLenov wrote:Как под КолибриОС компилировать программу, написанную на FreePascal в Linux или WIndows?
Где должен находится файл "example.pp" для успешной компиляции?
- Attachments
-
-
паскаль.PNG (43.43 KiB)Viewed 14137 times
-
Сложно сказать, ты читал эту тему, особенно сообщения на этой странице?
Из хаоса в космос
Я переименовал example.pp в sample.pp Компиляция в формате kex вроде прошла успешно. Но почему kex-файлы не запускаются в Колибри? (я использовал build_sample) C lrl.pp я делал то же самое
exe2kos есть, используешь?
Из хаоса в космос
Это наверняка стандартная база $00400000. Чтобы уменьшить размер, нужно воспользоваться PE Tool:bw wrote:> после заголовка километровое пустое место идет
Ну как я и обещал, какая-то секция, возможно стэк. Хотя могу врать, забыл всё нахрен.
Code: Select all
pet -strip -trunc -rebase 0 -osver 0.7 -into my.exe
В разработке: воспроизводственный контур ИТ
Who is online
Users browsing this forum: No registered users and 1 guest