Klikaos est un amateur et un système d'exploitation éducatif écrit en C (et certaines petites pièces sont écrites en assemblage).
Vous pouvez créer des klikaos en utilisant un environnement de développement vagabond ou sur votre machine locale.
VagrantFile contient déjà toutes les dépendances nécessaires pour construire des klikaos. Pour utiliser Vagrant comme environnement de développement suivant les dépendances doit être installée sur votre machine hôte:
brew install qemu )Exécutez après:
vagrant up
vagrant ssh
cd /vagrant
make all run
Cela créera une image ISO et une image ISO et une image HD dans le dossier images . Pour l'exécuter, vous aurez besoin de Qemu sur votre machine locale. Vous pouvez l'exécuter (à partir de votre machine locale):
qemu-system-x86_64 -cdrom images/klika-os-x86_64.iso -m 128 -drive file=images/disk.img,format=raw,index=0,media=disk -boot order=d -serial stdio
Le moyen le plus efficace de construire et d'exécuter Klikaos est d'installer GCC Cross Compiler pour votre plate-forme. Les outils GCC doivent être nommés en utilisant le préfixe x86_64-elf comme:
x86_64-elf-gcc
x86_64-elf-ld
x86_64-elf-as
x86_64-elf-nm
x86_64-elf-objdump
x86_64-elf-objcopy
...
Dépendances:
Le moyen le plus simple est de se pencher sur Vagrantfile et de voir ce qui doit être installé.
Pour construire et courir avec Qemu:
make all run
Repostiory contient déjà des images ISO et HD pré-construites. Le moyen le plus rapide de l'exécuter sera d'utiliser Qemu:
qemu-system-x86_64 -cdrom images/klikaos-x86_64.iso -m 128 -drive file=images/disk.img,format=raw,index=0,media=disk -boot order=d -serial stdio
Convertir l'image Qemu brute en image .vdi:
qemu-img convert -O vdi images/disk.img images/disk.vdi
Mount disk.vdi (maître) et klikaos-x86_64.iso (esclave). Démarrer la machine.
La meilleure façon de créer une nouvelle application est de copier simple_win à partir du dossier apps . Exemple de l'application GUI:
// See ./apps/simple_win
#include <klikaos.h>
#include <windows.h>
#include <stdlib.h>
#define MSG_USER_WIN (WINDOW_USER_MESSAGE + 1)
#define MSG_USER_BTN1 (WINDOW_USER_MESSAGE + 2)
#define MSG_USER_BTN2 (WINDOW_USER_MESSAGE + 3)
#define MSG_USER_LABEL (WINDOW_USER_MESSAGE + 4)
message_t msg ;
window_t * window ;
window_t * label ;
long counter = 0 ;
void increment_counter ( int add ) {
char buff [ 123 ];
counter += add ;
sprintf ( buff , "Count: %i" , counter );
label_set_text ( label , buff );
}
int main () {
int layout_y = WINDOW_BAR_HEIGHT + 10 ;
window = window_create ( 100 , 100 , 300 , 300 , "Simple Window" , MSG_USER_WIN , WINDOW_ATTR_NONE , WINDOW_FRAME_DEFAULT );
button_create ( window , 10 , layout_y , 100 , 30 , "Click me +" , MSG_USER_BTN1 );
button_create ( window , 120 , layout_y , 100 , 30 , "Click me -" , MSG_USER_BTN2 );
label = label_create ( window , 10 , layout_y + 40 , 200 , 20 , "Number of clicks" , MSG_USER_LABEL );
while ( window_get_message ( window , & msg )) {
switch ( msg . message ) {
case MSG_USER_BTN1 :
increment_counter ( 1 );
break ;
case MSG_USER_BTN2 :
increment_counter ( -1 );
break ;
}
window_dispatch ( window , & msg );
}
return 0 ;
}/apps Folder
Merci à ces gens merveilleux (clé emoji):
Samirh | Ensar Sarajčić | Almir Hamza |
Ce projet suit les spécifications de tous les contributeurs. Contributions de toute nature bienvenue!