版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SilverFOX111/article/details/86489856
本文所谈的config.mk是顶层目录下的MK文件。
- 97-107行给出了编译工具的定义
AS = $(CROSS_COMPILE)as
LD = $(CROSS_COMPILE)ld
CC = $(CROSS_COMPILE)gcc
CPP = $(CC) -E
AR = $(CROSS_COMPILE)ar
NM = $(CROSS_COMPILE)nm
LDR = $(CROSS_COMPILE)ldr
STRIP = $(CROSS_COMPILE)strip
OBJCOPY = $(CROSS_COMPILE)objcopy
OBJDUMP = $(CROSS_COMPILE)objdump
RANLIB = $(CROSS_COMPILE)RANLIB
- 第112行包含进来一个自动生成的配置文件,生成所需要的材料在…/uboot/include/configs/目录下,里面有关于各种开发板的宏定义头文件,在执行
make all
之后会在…/uboot/include/configs/目录下生成autoconf.mk文件,里面记载着关于开发板的各项参数。
sinclude $(OBJTREE)/include/autoconf.mk
- 144-188行定义了编译所需要的链接脚本
ifeq ($(CONFIG_NAND_U_BOOT),y)
LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot-nand.lds
else
LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds
endif
CONFIG_NAND_U_BOOT 变量在autoconf.mk文件中定义。
- 156-158行指定了链接地址
ifneq ($(TEXT_BASE),)
CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
endif
TEXT_BASE 在主Makefile中2591行将定义写入到了$(obj)board/samsung/x210/config.mk文件中。
- 239-256行给出了Makefile的自动推导规则
ifndef REMOTE_BUILD
%.s: %.S
$(CPP) $(AFLAGS) -o $@ $<
%.o: %.S
$(CC) $(AFLAGS) -c -o $@ $<
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
else
$(obj)%.s: %.S
$(CPP) $(AFLAGS) -o $@ $<
$(obj)%.o: %.S
$(CC) $(AFLAGS) -c -o $@ $<
$(obj)%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
endif
REMOTE_BUILD 在主Makefile文件中定义区分是否原地编译。