U-Boot Makefile分析(4)具体子Makefile的分析

  前面分析的都是多数Makefile要读入的文件,这次我们以drivers/mtd/nand/Makefile为例,分析一个具体的子Makefile是如何工作的。

  子Makefile的结构是固定的:

include $(TOPDIR)/config.mk     读入配置信息

LIB := $(obj)lib_name.o        当前Makefile的目标文件

添加源文件,COBJS-y是要编译的对象。

COBJS := $(COBJS-y)        指定目标文件

SRCS := $(COBJS:%.o=%.c)     指定源文件

OBJS := $(addprefix $(obj),$(COBJS)) 给目标文件加上obj前缀

all: $(LIBS)              伪目标

$(LIBS): $(obj).depend $(OBJS)    链接所有目标文件成当前lib_name.o

  $(call cmd_link_o_target, $(OBJS))

#include $(SRCTREE)/rules.mk    依赖文件的生成

sinclude $(obj).depend        汇总的依赖信息

 

  指定源文件的时候,会根据config.mk读入的autoconf.mk决定某个目标文件是否需要编译生成,如:

COBJS-$(CONFIG_NAND_S5PV210) += s5p_nand.o

  如果include/autoconf.mk中CONFIG_NAND_S5PV210=y,那么s5p_nand.o就会被编译生成,并最终加入到libnand.o中。

  每一个源文件,在汇总的依赖信息中都有一条依赖描述信息,形如:

s5p_nand.o: s5p_nand.c

header1

header2

,,,

  但是依赖信息下面并没有执行命令,需要执行的命令放在了config.mk中静态模式中,也就是说依赖是依赖,静态模式是静态模式,静态模式可以决定执行什么命令,但是依赖就是只是一种描述。当源文件有了改动,那么LIB的依赖OBJS就比目标新,显然就要执行cmd_link_o_target更新,当头文件发生了改动,根据依赖信息,对应的.o目标文件就会更新,而且.depend也会更新,所以一定会带来目标LIB的更新。

  

转载于:https://www.cnblogs.com/tech-lqh/p/8407400.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值