klika os
1.0.0
克里科斯(Klikaos)是用C編寫的業餘愛好者和教育操作系統(一些小部分是在組裝中編寫的)。
您可以使用Vagrant Dev環境或本地機器構建Klikaos。
VagrantFile已經包含構建Klikaos所需的所有依賴關係。要使用流浪漢作為開發環境,必須在主機機上安裝以下依賴項:
brew install qemu )運行以下內容:
vagrant up
vagrant ssh
cd /vagrant
make all run
這將在images文件夾中創建可引導的ISO映像和高清圖像。要運行它,您將需要本地計算機上的QEMU。您可以(從本地計算機)運行它:
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
構建和運行Klikaos的最有效方法是為您的平台安裝GCC交叉編譯器。 GCC工具必須使用x86_64-elf前綴命名:
x86_64-elf-gcc
x86_64-elf-ld
x86_64-elf-as
x86_64-elf-nm
x86_64-elf-objdump
x86_64-elf-objcopy
...
依賴性:
最簡單的方法是查看VagrantFile,看看需要安裝什麼。
用Qemu構建和運行:
make all run
重新播放已經包含預構建的ISO和HD圖像。運行最快的方法將使用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
將原始QEMU映像轉換為.vdi映像:
qemu-img convert -O vdi images/disk.img images/disk.vdi
Mount disk.vdi(Master)和Klikaos-X86_64.ISO(從屬)。啟動機器。
創建新應用程序的最佳方法就是從apps文件夾複製simple_win 。 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文件夾中發現應用程序
謝謝這些好人(表情符號鑰匙):
薩米爾 | EnsarSarajčić | 阿爾米爾·哈姆扎(Almir Hamza) |
該項目遵循全企業規範。歡迎任何形式的貢獻!