1.Makefile格式
//最终目标
all: led.o //依赖
arm-linux-ld -Tled.lds -o led.elf led.o //命令
arm-linux-objcopy -O binary led.elf led.bin //命令
//目标
led.o : led.S//依赖
arm-linux-gcc -g -o led.o -c led.S //命令
.PHONY: clean
//伪目标--无依赖
clean:
rm *.o led.elf led.bin //命令
2.Makefile 变量
使用变量前:
app1 : app1 .o func1 .o func2.o
gcc app1 .o func1 .o func2.o - o app1
app2: app2.o func1 .o func2.o
gcc app2.o func1 .o func2.o - o app2
obj=func1 .o func2.o
app1 : app1 .o $(obj)
gcc app1 .o $(obj) - o app1
app2: app2.o $(obj)
gcc app2.o $(obj) - o app2
3.makefile规则
在makefile中,用 户 除了 可以自 己定义变量外, 还可以使用
存在系统已经定义好的默认变量。
v $^: 代表所有的依赖文件
v [email protected]: 代表目标
v $<: 代表第一个依赖文件
使用前:
led.o : led.S
arm- linux- gcc -g –o led.o - c led.S
使用后:
led.o : led.S
arm- linux- gcc -g –o [email protected] - c $^
4.%表示任意的名字--通用规则
all:led.bin
led.bin: led.o
arm-linux-ld -Tled.lds -o led.elf led.o
arm-linux-objcopy -O binary led.elf led.bin
%.o : %.S
arm-linux-gcc -g -o [email protected] $< -c
.PHONY: clean
clean:
rm *.o led.elf led.bin led.dis
5.Makefile回显
Makefile中“#”字符后的内 容被视作注释。
hello: hello.c
@gcc hello. c –o hello
@:取消回显 ( 演示)
6.文件名
make命令默认在当 前目 录下寻找名字为
makefile或者Makefile的工程文件, 当 名字
不为这两者之一时, 可以使用 如下方法指
make –f 文件名