المقدمة
KolibriOS هو نظام تشغيل مصغر ، النواة ومعظم برامجها مكتوبة بلغة التجميع. هذا بالطبع لا يعني أنه من المستحيل الكتابة لـ KolibriOS بلغات برمجة أخرى.
هذه المقالة عبارة عن دليل لإعداد سلسلة أدوات لنظام Linux.
لنبدأ
للقيام بذلك ، تحتاج إلى تنزيل:
- Toolchain (مترجم)
- FTP SDK (المكتبات)
- SDK مع SVN
قم بإنشاء مجلد / home / USER / autobuild (حيث USER هو اسم المستخدم). بعد ذلك ، لنقم بإنشاء ارتباط:
sudo ln -s /home/USER/autobuild /home/autobuild
دعنا نذهب إلى / home / autobuild. قم بإنشاء شجرة دليل / home / autobuild / tools / win32. قم بتنزيل toolchain أعلاه وفك ضغطه إلى / home / autobuild / tools / win32. بعد ذلك ، قم بتنزيل SDK من FTP وفك ضغطه على / home / autobuild / tools / win32 / lib و / home / autobuild / tools / win32 / mingw32 / lib (في مكانين - لأن كلا المسارين يُستخدمان في ملفات makefiles). الآن يأتي الجزء الممتع.
تنزيل SVN
قم بتمييز مجلد واحد. سأشير إليه هنا باسم / home / USER / KOS_SVN. تشغيل في المحطة:
cd /home/USER/KOS_SVN
svn co svn://kolibrios.org
أنت بحاجة إلى الانتظار حتى يتم تنزيل SVN بالكامل.
التحضير للتجميع
لتتمكن من استخدام الأدوات ، تحتاج إلى تسجيل المسار إلى المجلد باستخدام الأدوات الموجودة في متغير البيئة "PATH" في ملف "/ etc / environment".
sudo nano /etc/environment
وأضف في نهاية الملف:
:/home/autobuild/tools/win32/bin
تحتاج أيضًا إلى تنزيل مكتبة libisl :
wget http://board.kolibrios.org/download/file.php?id=8301libisl.so.10.2.2.7z && 7z x file.php?id=8301libisl.so.10.2.2.7z
sudo mv libisl.so.10.2.2 /usr/lib/x86_64-linux-gnu && sudo ln -s /usr/lib/x86_64-linux-gnu/libisl.so.10.2.2 /usr/lib/x86_64-linux-gnu/libisl.so.10
sudo chmod go-w /usr/lib/x86_64-linux-gnu/libisl.so.10 && sudo chmod go-w /usr/lib/x86_64-linux-gnu/libisl.so.10.2.2
مشكلة أخرى معروفة: /home/autobuild/tools/win32/bin/../libexec/gcc/mingw32/5.4.0/cc1 :
حدث خطأ أثناء تحميل المكتبات المشتركة: libmpfr.so.4: لا يمكن فتح ملف كائن مشترك: لا مثل هذا الملف أو الدليل
تصحيح عن طريق الارتباط:
sudo ln -s /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-linux-gnu/libmpfr.so.4
التحويل البرمجي
توجد نماذج البرامج في / home / USER / KOS_SVN / Contrib / sdk / sample. خذ القاهرة على سبيل المثال. دعنا نذهب إلى المجلد ونقول Make . إذا نجح كل شيء ، فسيظهر ملف cairo الثنائي في المجلد الذي يعمل في KolibriOS.
مثال آخر
مرحبا ج :
#include <kos32sys.h>
char* title = "Window";
void _draw_window(){
BeginDraw();
DrawWindow(100,100,400,200,title,0x80ffffff,0x13);
EndDraw();
}
int main()
{
_draw_window();
for (;;)
{
switch(get_os_event())
{
case 1:
_draw_window();
continue;
case 2:
// key pressed, read it and ignore
get_key();
continue;
case 3:
// button pressed; we have only one button, close
if(get_os_button() == 1) return 0;
continue;
}
}
}
سوف يعمل ملف Makefile التالي (استبدل المسافات بعلامات تبويب):
CC = kos32-gcc
LD = kos32-ld
SDK_DIR:= /home/USER/KOS_SVN/contrib/sdk
LDFLAGS = -static -S -nostdlib -T $(SDK_DIR)/sources/newlib/app.lds --image-base 0
CFLAGS = -c -fno-ident -O2 -fomit-frame-pointer -fno-ident -U__WIN32__ -U_Win32 -U_WIN32 -U__MINGW32__ -UWIN32
INCLUDES= -I $(SDK_DIR)/sources/newlib/libc/include
LIBPATH:= -L $(SDK_DIR)/lib -L /home/autobuild/tools/win32/mingw32/lib
SOURCES = hello.c \
$(NULL)
OBJECTS = $(patsubst %.c, %.o, $(SOURCES))
default: hello.kex
hello.kex: $(OBJECTS) Makefile
$(LD) $(LDFLAGS) $(LIBPATH) --subsystem native -o hello.kex $(OBJECTS) -lgcc -lc.dll
objcopy hello.kex -O binary
%.o : %.c Makefile $(SOURCES)
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $<
إذا كان لديك أي مشاكل ، فاكتب في التعليقات.