introduction
KolibriOS est un système d'exploitation miniature, dont le noyau et la plupart des programmes sont écrits en langage d'assemblage. Ceci, bien sûr, ne signifie pas qu'il est impossible d'écrire pour KolibriOS dans d'autres langages de programmation.
Cet article est un guide pour configurer une chaîne d'outils pour Linux.
Commençons
Pour ce faire, vous devez télécharger:
- Toolchain (compilateur)
- SDK FTP (bibliothèques)
- SDK avec SVN
Créez un dossier / home / USER / autobuild (où USER est le nom d'utilisateur). Ensuite, créons un lien:
sudo ln -s /home/USER/autobuild /home/autobuild
Allons à / home / autobuild. Créez une arborescence de répertoires / home / autobuild / tools / win32. Téléchargez la chaîne d'outils ci-dessus et décompressez-la dans / home / autobuild / tools / win32. Ensuite, téléchargez le SDK depuis FTP et décompressez-le sur / home / autobuild / tools / win32 / lib et / home / autobuild / tools / win32 / mingw32 / lib (à deux endroits - car les deux chemins sont utilisés dans les makefiles). Vient maintenant la partie amusante.
Télécharger SVN
Mettez en surbrillance un dossier. Je l'appellerai ici / home / USER / KOS_SVN. Exécutez dans le terminal:
cd /home/USER/KOS_SVN
svn co svn://kolibrios.org
Vous devez attendre que tout le SVN soit téléchargé.
Préparation de la compilation
Pour pouvoir utiliser les outils, vous devez enregistrer le chemin d'accès au dossier avec les outils dans la variable d'environnement "PATH" dans le fichier "/ etc / environment".
sudo nano /etc/environment
Et ajoutez à la fin du fichier:
:/home/autobuild/tools/win32/bin
Vous devez également télécharger la bibliothèque 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
Un autre problème connu:
/home/autobuild/tools/win32/bin/../libexec/gcc/mingw32/5.4.0/cc1: erreur lors du chargement des bibliothèques partagées: libmpfr.so.4: impossible d'ouvrir le fichier objet partagé: Non tel fichier ou répertoire
Corrigé par lien:
sudo ln -s /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-linux-gnu/libmpfr.so.4
Compilation
Les exemples de programmes se trouvent dans / home / USER / KOS_SVN / contrib / sdk / samples. Prenons le Caire par exemple. Allons dans le dossier et disons make . Si tout réussit, le binaire cairo apparaîtra dans le dossier , qui s'exécute dans KolibriOS.
Encore un exemple
bonjour.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;
}
}
}
Le Makefile suivant fonctionnera pour cela (remplacez les espaces par des tabulations):
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 vous avez des problèmes, écrivez dans les commentaires.