Klikaos adalah sistem operasi hobi dan pendidikan yang ditulis dalam C (dan beberapa bagian kecil ditulis dalam perakitan).
Anda dapat membangun Klikaos menggunakan lingkungan Vagrant Dev atau di mesin lokal Anda.
Vagrantfile sudah berisi semua dependensi yang diperlukan untuk membangun Klikaos. Untuk menggunakan Vagrant sebagai lingkungan pengembangan setelah dependensi harus diinstal pada mesin host Anda:
brew install qemu )Jalankan berikut:
vagrant up
vagrant ssh
cd /vagrant
make all run
Ini akan membuat gambar ISO yang dapat di -boot dan gambar HD di folder images . Untuk menjalankannya, Anda akan membutuhkan QEMU di mesin lokal Anda. Anda dapat menjalankannya (dari mesin lokal Anda):
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
Cara paling efektif untuk membangun dan menjalankan Klikaos adalah dengan menginstal GCC Cross Compiler untuk platform Anda. Alat GCC harus dinamai menggunakan awalan x86_64-elf seperti:
x86_64-elf-gcc
x86_64-elf-ld
x86_64-elf-as
x86_64-elf-nm
x86_64-elf-objdump
x86_64-elf-objcopy
...
Ketergantungan:
Cara termudah adalah dengan melihat ke Vagrantfile dan melihat apa yang perlu diinstal.
Untuk membangun dan menjalankan dengan qemu:
make all run
Repostiory sudah berisi gambar ISO dan HD yang sudah dibangun. Cara tercepat untuk menjalankannya akan menggunakan 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
Konversi gambar qemu mentah menjadi gambar .vdi:
qemu-img convert -O vdi images/disk.img images/disk.vdi
Mount disk.vdi (master) dan klikaos-x86_64.iso (budak). Mulai mesin.
Cara terbaik untuk membuat aplikasi baru adalah dengan menyalin folder simple_win dari apps . Contoh untuk aplikasi 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
Terima kasih kepada orang -orang yang luar biasa ini (Kunci Emoji):
Samirh | Ensar Sarajčić | Almir Hamza |
Proyek ini mengikuti spesifikasi semua-kontributor. Kontribusi apa pun yang baik!