make 命令 作用是读入一个名为 Makefile 的文件,然后执行这个文件中指定的指令。 Makefile Makefile 告诉 make 怎样执行一系列的指令去依靠源文件生成一个目标文件。Makefile 中声明了一个依赖关系的列表,这个列表应当包含所有文件(无论是源文件或者目标)作为输入 。 Makefile 文件一般命名为 Makefile 或 makefile ,如果 m 小写有时候可能会出现错误。 $@ 表示当前目标文件的名字 $^ 表示用空格隔开的所有依赖文件 $< 表示第一个依赖文件 驱动的 Makefile 与一般应用程序的 Makefile 有所不同,驱动的 Makefile 要指定内核源代码的位置。 KDIR := /home/matt/linux-3.2.0-psp04.06.00.11 $(MAKE) -C $(KDIR) M=$(PWD) modules $(MAKE) 为自带的变量 -C $(KDIR) 指明跳转到内核源码目录下读取那里的 Makefile M=$(PWD) 表明然后返回到当前目录继续读入、执行当前的 Makefile 方便起见一般都会先定义编译器链接器: CC = gcc LD = gcc 正则表达式表示目录下所有 .c 文件,相当于:SRCS = main.c a.c b.c SRCS = $(wildcard *.c) OBJS 表示 SRCS 中把列表中的 .c 全部替换为 .o,相当于:OBJS = main.o a.o b.o OBJS = $(patsubst %c, %o, $(SRCS)) 可执行文件的名字: TARGET = Hello .PHONE 伪目标,具体含义百度一下一大堆介绍 .PHONY:all clean 要生成的目标文件: all: $(TARGET) 第一行依赖关系:冒号后面为依赖的文件,相当于 Hello: main.o a.o b.o 第二行规则:$@ 表示目标文件,$^ 表示所有依赖文件,$< 表示第一个依赖文件 $(TARGET): $(OBJS) $(LD) -o $@ $^ 上一句目标文件依赖一大堆 .o 文件,这句表示所有 .o 都由相应名字的 .c 文件自动生成 %o:%c $(CC) -c $^ make clean 删除所有 .o 和目标文件: clean: rm -f $(OBJS) $(TARGET) 注意:命令前必须以 tab 键开头,不能是...