AS86 = as86 -0 -a # 8086 汇编编译器和连接器
LD86 = ld86 -0
AS = as # GNU 汇编编译器 和 连接器
LD = ld
LDFLAGS = -s-x-M # GNU 连接器 gld 运行时用到的标识选项
CC = gcc $(RAMDISK) # GNU C 程序编译器
CFLAGS = -Wall-O-fstrength-reduce-fomit-frame-pointer #gcc 的选项
CPP = cpp-nostdinc-Iinclude # gcc 的预处理程序
# ROOT_DEV 指定在创建内核映像文件时所使用的默认根文件系统所在的设备
# 这可以是软盘(FLOPPY)、/dev/xxxx 或者干脆空着、空闲时、build 程序
# (在 tools/ 目录中) 就使用 默认值 /dev/hd6
ROOT_DEV = /dev/hdb1
ARCHIVES = kernel/kernel.o mm/mm.o fs/fs.o
# kernel、mm 和 fs 所产生的目标代码文件
FILESYSTEMS = fs/minix/minix.o
# minix虚拟文件系统所产生的目标代码文件
DRIVERS = kernel/blk_drv/blk_drv.a kernel/chr_drv/chr_drv.a
# 块和字符设备库文件
MATH = kernel/math/math.a #数学运算库文件
LIBS - lib/lib.a # 由 lib/目录中的文件编译生成通用库文件
c.s:
# make 老式的隐式后缀规则。指示make利用下面的命令将所有的.c文件编译
# 生成.s 汇编程序. ':'表示下面的是该规则的命令
$(CC)$(CFLAGS)\
-nostdinc -Iinclude -S -o $*.s $<
.s.o: #将所有的.s 汇编程序文件编译成.o 目标文件
$(AS) -c -o $*.o $<
.c.o:#将所有的*.c 文件.编译成.o 目标文件
$(CC)$(CFLAGS)\
-nostdinc -Iinclude -c -o $*.o $<
all: Image #all 表示创建 Makefile 所知的最顶层目标,即是 p_w_picpaths 文件
Image: boot/bootsect boot/setup tools/system tools/build
# 说明目标(Image 文件)是 由分号后面的4 个元素产生
tools/build boot/bootsect boot/setup tools/system $(ROOT_DEV) > Image
sync #执行的命令
disk:Image #表明 disk 由 Images 产生
dd bs=8192 if=Image of=/dev/PS0
tools/build:tools/build.c #由 tools 目录下的 build.c 程序生成执行程序 build
$(CC)$(CFLAGS)\
-o tools/build tools/build.c
boot/head.o:boot/head.s # 利用head.s生成head.o目标文件
tools/system:boot/head.o init/main.o\
$(ARCHIVES)$(FILESYSTEMS)$(DRIVERS)$(MATH)$(LIBS)
# '\' 符号表示下一行是续行。此两行表示tools 目录中的system 文件由分号右边所列的 元素生成。
$(LD)$(LDFLAGS) boot/head.o init/main.o\