Klikaos ist ein in C geschriebenes Hobby- und Bildungssystem (und einige kleine Teile sind in der Versammlung geschrieben).
Sie können Klikaos mit einer Vagranten -Entwicklerumgebung oder auf Ihrer lokalen Maschine bauen.
VagrantFile enthält bereits alle Abhängigkeiten, die zum Bau von Klikaos benötigt werden. Um die Vagrant als Entwicklungsumgebung nach Abhängigkeiten zu verwenden, müssen auf Ihrem Host -Computer installiert werden:
brew install qemu )Laufen Sie folgen:
vagrant up
vagrant ssh
cd /vagrant
make all run
Dadurch werden bootfähige ISO -Image und HD -Bild im Ordner im images erstellt. Um es auszuführen, benötigen Sie QEMU auf Ihrer lokalen Maschine. Sie können es ausführen (von Ihrer lokalen Maschine):
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
Die effektivste Möglichkeit, Klikaos zu bauen und auszuführen, besteht darin, den GCC -Cross -Compiler für Ihre Plattform zu installieren. GCC-Tools müssen mit x86_64-elf -Präfix benannt werden.
x86_64-elf-gcc
x86_64-elf-ld
x86_64-elf-as
x86_64-elf-nm
x86_64-elf-objdump
x86_64-elf-objcopy
...
Abhängigkeiten:
Der einfachste Weg ist es, die VagrantFile zu untersuchen und zu sehen, was installiert werden muss.
Mit QEMU bauen und laufen:
make all run
Repostiory enthält bereits vorgefertigte ISO- und HD-Bilder. Der schnellste Weg zum Ausführen wird QEMU verwendet:
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
Konvertieren Sie das Roh -Qemu -Bild in .VDI -Bild:
qemu-img convert -O vdi images/disk.img images/disk.vdi
Mount Disk.vdi (Meister) und Klikaos-X86_64.iso (Sklave). Startmaschine.
Die beste Möglichkeit, eine neue App zu erstellen, besteht darin, einfach simple_win aus dem apps -Ordner zu kopieren. Beispiel für die GUI -App:
// 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 Ordner
Vielen Dank an diese wunderbaren Menschen (Emoji -Schlüssel):
Samirh | Ensar Sarajčić | Almir Hamza |
Dieses Projekt folgt der All-Contributors-Spezifikation. Beiträge jeglicher Art willkommen!