#上层makefile调用执行make命令,执行的应该是第一个目标all
HEAD = head.o
SYSTEM =
../tools/zSystem
#LD = gcc
#TEST = -DTEST_DRIVER
zOBJECTS = $(HEAD)
inflate.o unzip.o misc.o
CFLAGS = -O2 -DSTDC_HEADERS
$(TEST)
#.c文件编译为.s文件
.c.s:
$(CC) $(CFLAGS) -S -o
$*.s $<
#.s文件编译为.o文件
.s.o:
$(AS) -c -o $*.o
$<
#.c文件编译为.o文件
.c.o:
$(CC) $(CFLAGS) -c -o $*.o
$<
#执行的第一个目标,依赖于zSystem
all:
zSystem
#目标zSystem,依赖于piggy.o
和变量zOBJECTS定义的目标
zSystem: piggy.o
$(zOBJECTS)
$(LD) $(LDFLAGS) -o zSystem
-Ttext 1000 $(zOBJECTS)
piggy.o
#head.s文件编译为head.o文件
head.o:
head.s
#head.S ../include/linux/tasks.h编译为head.s文件
head.s:
head.S ../include/linux/tasks.h
$(CPP) -traditional head.S
-o head.s
#目标piggy.o,依赖于SYSTEM定义的变量 xtract 和
piggyback
#./xtract--可执行程序一个参数是xtract $(SYSTEM)--输入的参数,是内核程序
#gzip
-9压缩文件,系统中要有gzip这个程序
#./piggyback > piggy.o
piggy.o:
$(SYSTEM) xtract piggyback
./xtract $(SYSTEM) | gzip -9 | ./piggyback >
piggy.o
#执行另一个目录下的make文件生成zsystem
$(SYSTEM):
$(MAKE) -C .. tools/zSystem
原文地址:http://www.cnblogs.com/xiaofengwei/p/3753345.html