pengantar
KolibriOS adalah sistem operasi miniatur, kernel dan sebagian besar programnya ditulis dalam bahasa assembly. Ini, tentu saja, tidak berarti bahwa tidak mungkin untuk menulis KolibriOS dalam bahasa pemrograman lain.
Artikel ini adalah panduan untuk menyiapkan toolchain untuk Linux.
Ayo mulai
Untuk melakukan ini, Anda perlu mengunduh:
- Toolchain (Penyusun)
- FTP SDK (Perpustakaan)
- SDK dengan SVN
Buat folder / home / USER / autobuild (di mana USER adalah nama pengguna). Selanjutnya, mari buat link:
sudo ln -s /home/USER/autobuild /home/autobuild
Ayo pergi ke / home / autobuild. Buat pohon direktori / home / autobuild / tools / win32. Unduh toolchain di atas dan ekstrak ke / home / autobuild / tools / win32. Selanjutnya, unduh SDK dari FTP dan buka paketnya di / home / autobuild / tools / win32 / lib dan / home / autobuild / tools / win32 / mingw32 / lib (di dua tempat - karena kedua jalur digunakan di makefiles). Sekarang tiba bagian menyenangkan.
Unduh SVN
Sorot satu folder. Saya akan menyebutnya di sini sebagai / home / USER / KOS_SVN. Jalankan di terminal:
cd /home/USER/KOS_SVN
svn co svn://kolibrios.org
Anda harus menunggu hingga seluruh SVN diunduh.
Mempersiapkan kompilasi
Untuk dapat menggunakan alat ini, Anda perlu mendaftarkan jalur ke folder dengan alat di variabel lingkungan "PATH" di file "/ etc / environment".
sudo nano /etc/environment
Dan tambahkan di akhir file:
:/home/autobuild/tools/win32/bin
Anda juga perlu mengunduh perpustakaan 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
Masalah lain yang diketahui:
/home/autobuild/tools/win32/bin/../libexec/gcc/mingw32/5.4.0/cc1: kesalahan saat memuat pustaka bersama: libmpfr.so.4: tidak dapat membuka file objek bersama: Tidak file atau direktori tersebut
Dikoreksi dengan tautan:
sudo ln -s /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-linux-gnu/libmpfr.so.4
Kompilasi
Program sampel berada di / home / USER / KOS_SVN / contrib / sdk / samples. Ambil Kairo sebagai contoh. Ayo pergi ke folder dan katakan make . Jika semuanya berhasil, biner cairo akan muncul di folder , yang berjalan di KolibriOS.
Satu contoh lagi
hello.c :
#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 berikut akan berfungsi untuk itu (ganti spasi dengan tab):
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 $@ $<
Jika Anda memiliki masalah, tulis di komentar.