|
以下是uboot的顶层config.mk
# If the list of objects to link is empty, just create an empty built-in.o
cmd_link_o_target = $(if $(strip $1),\ $(LD) -r -o $@ $1 ,\
rm -f $@; $(AR) rcs $@ )
调用如下:
include $(TOPDIR)/config.mk
LIB = $(obj)lib$(BOARD).a
COBJS-y := smdk6410.o
SOBJS := lowlevel_init.o
SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c)
OBJS := $(addprefix $(obj),$(COBJS-y))
SOBJS := $(addprefix $(obj),$(SOBJS))
$(LIB): $(obj).depend $(SOBJS) $(OBJS)
$(call cmd_link_o_target, $(SOBJS) $(OBJS))
#cmd_link_o_target = $(if $(strip $1),\
# $(LD) $(LDFLAGS) -r -o $@ $1,\
# rm -f $@; $(AR) rcs $@ )
clean:
rm -f $(SOBJS) $(OBJS)
distclean: clean
rm -f $(LIB) core *.bak $(obj).depend
#########################################################################
# defines $(obj).depend target
include $(SRCTREE)/rules.mk
sinclude $(obj).depend
#########################################################################
在新版的uboot是有调用的,我们分析下在board/sumsung/smdk6410文件夹下的makefile如上。
cmd_link_o_target在make时当然会运行,要不干吗用。
$@就是$(obj)lib$(BOARD).a
$(strip $1),个人觉得应改为$(strip $1) && $(strip $2) 这个在连接时把COBJS-y := smdk6410.o
SOBJS := lowlevel_init.o 都连接进去。
$(AR) rcs $@ 生成静态库文件
rm -f $@;如果删掉的话,还生成个鸟啊。搞不明白这个。。。
各位大侠有何高见 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|