Klikaos는 C로 작성된 애호가 및 교육 운영 체제입니다 (일부 작은 부분은 조립으로 작성되었습니다).
vagrant dev 환경이나 로컬 컴퓨터를 사용하여 Klikaos를 구축 할 수 있습니다.
Vagrantfile에는 이미 Klikaos를 구축하는 데 필요한 모든 의존성이 포함되어 있습니다. 호스트 컴퓨터에 종속성에 따라 Vagrant를 개발 환경으로 사용하려면 : 호스트 컴퓨터에 설치해야합니다.
brew install qemu )다음 실행 :
vagrant up
vagrant ssh
cd /vagrant
make all run
이렇게하면 images 폴더에서 부팅 가능한 ISO 이미지 및 HD 이미지가 생성됩니다. 그것을 실행하려면 로컬 컴퓨터에서 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
Repostiory에는 이미 사전 구축 된 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
RAW QEMU 이미지를 .VDI 이미지로 변환하십시오.
qemu-img convert -O vdi images/disk.img images/disk.vdi
마운트 디스크 VDI (마스터) 및 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 폴더에서 앱을 발견합니다
이 멋진 사람들에게 감사합니다 (이모티콘 키) :
사미르 | Ensar Sarajčić | 알 미르하자 |
이 프로젝트는 All-Contritors 사양을 따릅니다. 모든 종류의 공헌을 환영합니다!