代码拉取完成,页面将自动刷新
cc=gcc
ld=ld
gccpara=-g -m32 -fno-pie -fno-stack-protector -nostdlib -nostdinc -ffreestanding -fno-asynchronous-unwind-tables
ldpara= -m elf_i386
disk=disk.img
INC_CLUDE=-I./
ALL: boot.bin loader.bin kernel.bin
dd if=/dev/zero of=$(disk) bs=512 count=20480
dd if=boot/boot.bin of=$(disk) conv=notrunc bs=512 count=1
dd if=loader/loader.bin of=$(disk) conv=notrunc seek=1
dd if=kernel/kernel.elf of=$(disk) conv=notrunc bs=512 seek=100
boot.bin: boot/bootsector.S
$(cc) boot/bootsector.S $(gccpara) -c -o boot/bootsector.o $(INC_CLUDE)
$(ld) boot/bootsector.o $(ldpara) -Ttext=0x7c00 -o boot/boot.elf
objcopy -O binary boot/boot.elf boot/boot.bin
loader.bin:
$(cc) loader/loader_entry.S $(gccpara) -c -o loader/loader_entry.o $(INC_CLUDE)
$(cc) loader/loader.c $(gccpara) -c -o loader/loader.o $(INC_CLUDE)
$(cc) loader/loader_32.c $(gccpara) -c -o loader/loader_32.o $(INC_CLUDE)
$(ld) loader/loader_entry.o loader/loader.o loader/loader_32.o -m elf_i386 -Ttext=0x8000 -O0 -o loader/loader.elf $(INC_CLUDE)
objcopy -O binary loader/loader.elf loader/loader.bin
kernel.bin:
$(cc) kernel/kernel_start.S $(gccpara) -c -o kernel/kernel_start.o $(INC_CLUDE)
$(cc) kernel/kernel.c $(gccpara) -c -o kernel/kernel.o $(INC_CLUDE)
$(cc) kernel/irq/irq.c $(gccpara) -c -o kernel/irq/irq.o $(INC_CLUDE)
$(cc) kernel/time/time.c $(gccpara) -c -o kernel/time/time.o $(INC_CLUDE)
$(ld) kernel/kernel_start.o kernel/kernel.o kernel/irq/irq.o kernel/time/time.o $(ldpara) -Ttext=0x10000 -o kernel/kernel.elf
clean:
find . -name "*.o" | xargs rm -f
find . -name "*.bin" | xargs rm -f
find . -name "*.elf" | xargs rm -f
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。