Makefile 规则的使用

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 $@ 代表目标
v $< 代表第一个依赖文件
使用前:
led.o : led.S
arm- linux- gcc -g o led.o - c led.S
使用后:
led.o : led.S
arm- linux- gcc -g o $@ - 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 $@ $< -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 文件名

原文地址:https://www.cnblogs.com/wxb20/p/6236324.html