Introducción
KolibriOS es un sistema operativo en miniatura, cuyo núcleo y la mayoría de los programas están escritos en lenguaje ensamblador. Esto, por supuesto, no significa que sea imposible escribir para KolibriOS en otros lenguajes de programación.
Este artículo es una guía para configurar una cadena de herramientas para Linux.
Empecemos
Para hacer esto, necesita descargar:
Cree una carpeta / home / USER / autobuild (donde USER es el nombre de usuario). A continuación, creemos un enlace:
sudo ln -s /home/USER/autobuild /home/autobuild
Vayamos a / home / autobuild. Cree un árbol de directorios / home / autobuild / tools / win32. Descargue la cadena de herramientas anterior y descomprímala en / home / autobuild / tools / win32. A continuación, descargue el SDK desde FTP y descomprímalo en / home / autobuild / tools / win32 / lib y / home / autobuild / tools / win32 / mingw32 / lib (en dos lugares, porque ambas rutas se usan en archivos MAKE). Ahora viene la parte divertida.
Descarga SVN
Resalta una carpeta. Me referiré a él aquí como / home / USER / KOS_SVN. Ejecutar en la terminal:
cd /home/USER/KOS_SVN
svn co svn://kolibrios.org
Debe esperar hasta que se descargue todo el SVN.
Preparándose para la compilación
Para poder utilizar las herramientas, debe registrar la ruta a la carpeta con las herramientas en la variable de entorno "PATH" en el archivo "/ etc / environment".
sudo nano /etc/environment
Y agregue al final del archivo:
:/home/autobuild/tools/win32/bin
También necesita descargar la biblioteca 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
Otro problema conocido:
/home/autobuild/tools/win32/bin/../libexec/gcc/mingw32/5.4.0/cc1: error al cargar bibliotecas compartidas: libmpfr.so.4: no se puede abrir el archivo de objeto compartido: No tal archivo o directorio
Corregido por enlace:
sudo ln -s /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-linux-gnu/libmpfr.so.4
Compilacion
Los programas de muestra se encuentran en / home / USER / KOS_SVN / contrib / sdk / samples. Tome El Cairo, por ejemplo. Vayamos a la carpeta y digamos make . Si todo tiene éxito, el binario de cairo aparecerá en la carpeta , que se ejecuta en KolibriOS.
Un ejemplo mas
hola.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;
}
}
}
El siguiente Makefile funcionará para él (reemplace los espacios con pestañas):
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 $@ $<
Si tienes algún problema, escribe en los comentarios.