将我的 Makefile 共享给所有人 (macOS 13.5)

作者: 1939323749创建于 2023年8月4日更新于 2025年10月25日

$@ = 目标文件 # $< = 第一个依赖项 # $^ = 所有依赖项 # 首个规则是在没有提供参数给 Makefile 时执行的规则 C_SOURCE_FILES = $(wildcard kernel/.c drivers/.c cpu/.c libc/.c) HEADERS = $(wildcard kernel/.h drivers/.h cpu/.h libc/.h) OBJ = ${C_SOURCE_FILES:.c=.o cpu/interrupt.o} CC = x86_64-elf-gcc # 通过 brew install x86_64-elf-gcc 获取 x86_64-elf-gcc GDB = i386-elf-gdb # 通过 brew install i386-elf-gdb 获取 i386-elf-gdb LD = x86_64-elf-ld # 通过 brew install x86_64-elf-binutils 获取 x86_64-elf-ld CFLAGS = -g all: run kernel.bin: boot/kernel_entry.o ${OBJ} ${LD} -m elf_i386 -o $@ -Ttext 0x1000 --entry _start $^ --oformat binary kernel.elf: boot/kernel_entry.o ${OBJ} ${LD} -m elf_i386 -o $@ -Ttext 0x1000 --entry _start $^ kernel_entry.o: kernel_entry.asm nasm $< -f elf -o $@ kernel.o: kernel.c ${CC} -m32 -march=i386 -ffreestanding -c $< -o $@ kernel.dis: kernel.bin ndisasm -b 32 $< > $@ bootsect.bin: bootsect.asm nasm $< -f bin -o $@ os-image.bin: boot/bootsect.bin kernel.bin cat $^ > $@ run: os-image.bin qemu-system-i386 -fda $< debug: os-image.bin kernel.elf qemu-system-i386 -s -fda os-image.bin & ${GDB} -ex "target remote localhost:1234" -ex "symbol-file kernel.elf" %.o : %.c ${HEADERS} ${CC} ${CFLAGS} -m32 -march=i386 -ffreestanding -c $< -o $@ %.o : %.asm nasm $< -f elf -o $@ %.bin : %.asm nasm $< -f bin -o $@ clean rm -fr .bin .dis .o os-image.bin .elf rm -fr kernel/.o boot/.bin boot/.o drivers/.o cpu/.o libc/.o

内容来源: cfenollosa/os-tutorial