Makefile文件示例
整个makefile文件示例:
#Design by slowby for S5PV210
#define var
#目标文件,终极目标
TARGET:= led.bin
BUILD := led
#如果没定义SD ?表示没定义
MYENV?= SD
SDTOOLS:= ./mk210 #sdtools截取前
16kB的内容,mkv210_image.c
#多文件
COBJS+= start.o
COBJS+= main.o
COBJS+= led.o
#工具集
CROSS_COMPILE = arm-linux-
#交叉编译器
CC:= $(CROSS_COMPILE)gcc
#链接器
LD:= $(CROSS_COMPILE)ld
#去文件格式转换工具
OBJCOPY := $(CROSS_COMPILE)objcopy
#编译选项
#显示警告信息
CFLAGS+= -Wall
#增加头文件查找目录
CFLAGS+= -I./inc
#链接选项
#主要是链接地址
#添加链接脚本,可以不用在意COBJS的添加顺序 -T是必须的,链接脚本名为map.lds
LDFLAGS+= -Tmap.lds
#. = 0x0; + -Ttex 的值作为基地址
ifeq ($(MYENV),SD)
LDFLAGS+= -Ttext=0x0
else
LDFLAGS+= -Ttext=0x20000000
endif
#Way
#$@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件。
all:$(TARGET)
ifeq ($(MYENV),SD)
#SD
#生成临时目标文件$@.TMP
#添加头信息校验
$(TARGET):$(BUILD)
$(OBJCOPY) -O binary $^ $@.TMP
$(SDTOOLS) $@.TMP $@
cp $@ ../bin -f
else
#RAM
#所有的$^依赖文件,生成目标文件$@
$(TARGET):$(BUILD)
$(OBJCOPY) -O binary $^ $@
cp $@ ../bin -f
endif
#链接 依赖于$^生成$@
$(BUILD):$(COBJS)
$(LD) $(LDFLAGS) -o $@ $^
#编译
#所有的.c生成所有的.o
%.o:%.c
$(CC) $(CFLAGS) -c -o $@ $^
#大S,c语言可以去处理汇编
%.o:%.S
$(CC) $(CFLAGS) -c -o $@ $^
clean:
rm -f $(TARGET) $(BUILD) *.o