diff --git a/Makefile b/Makefile index b40d4a5..a17d91e 100644 --- a/Makefile +++ b/Makefile @@ -15,11 +15,15 @@ debug: os.iso kernel/kernel.elf qemu-system-i386 -s $(QFLAGS) & $(GDB) -ex "target remote localhost:1234" -ex "symbol-file kernel/kernel.elf" -os.iso: kernel/kernel.elf initrd/* +os.iso: kernel/kernel.elf initrd/* initrd/prog.elf cp kernel/kernel.elf iso/boot ruby makeinitrd.rb initrd iso/boot/initrd grub-mkrescue -o $@ iso +initrd/prog.elf: prog/* + cd prog && make + cp prog/prog.elf initrd + kernel/kernel.elf: $(OBJ) i386-elf-ld -T linker.ld -o $@ $^ diff --git a/prog/Makefile b/prog/Makefile new file mode 100644 index 0000000..45dbf34 --- /dev/null +++ b/prog/Makefile @@ -0,0 +1,13 @@ +C_SOURCES = $(wildcard *.c) +OBJ = $(C_SOURCES:.c=.o) +CFLAGS = -Wall -g -ffreestanding +CC = i386-elf-gcc + +prog.elf: $(OBJ) + i386-elf-ld -o $@ $^ + +%.o: %.c + $(CC) $(CFLAGS) -c $< -o $@ + +clean: + rm -rf *.o prog.elf diff --git a/prog/main.c b/prog/main.c new file mode 100644 index 0000000..a8cdd51 --- /dev/null +++ b/prog/main.c @@ -0,0 +1,4 @@ +int _start() { + int x=17; + return x+3; +}