OS日記~Makefileの整理~
今日はMakefileを整理しました。
AS := x86_64-elf-as CC := x86_64-elf-gcc OBJS := boot.o kernel.o IMAGE := myos %.o: %.S Makefile $(AS) $*.S -o $@ %.o: %.c Makefile $(CC) -c $*.c -o $@ -std=gnu99 -ffreestanding -O2 -Wall -Wextra $(IMAGE).bin: $(OBJS) linker.ld $(CC) -T linker.ld -o $@ -ffreestanding -O2 -nostdlib $(OBJS) -lgcc $(IMAGE).iso: $(IMAGE).bin i386-elf-grub-file --is-x86-multiboot $(IMAGE).bin mkdir -p isodir/boot/grub cp $(IMAGE).bin isodir/boot/myos.bin cp grub.cfg isodir/boot/grub/grub.cfg i386-elf-grub-mkrescue -o $@ isodir
こんな感じです。x86_64-elf-gcc/as にすると、grub-fileで止まります(後述)。
あと
https://qiita.com/kojiohta/items/54b1a9f7d482c35dc4fa
とかで、Makefileの変数について調べました。
32bitのosdev.orgのチュートリアルをベースに64bitモードに移行させようとしましたが、x86_64-elf-gcc にすると、どういうわけか、マルチブートヘッダーがぶっ飛んでしまうので、うまく起動できませんでした。64bit os create tutorial でも、マルチブートヘッダーがなくなって、grub-fileでimageファイルが作れなくなるので、意味がわかりません。
煮詰まったので、検索したら、64bit モードのブートまでをやってる海外サイトがあったので、明日はそれをやろうと思います。
今日も一日楽しかったです。
明日も更新したいです。