0K6410学习之make_all

 Uboot的makefile太庞大了,分析起来也太复杂了,推荐一个好点的方法,就是通过make之后打印的信息逆向分析吧,个人感觉,对于我们的自己的板子来说,makefile里面能用到的东西实在是相当少的一部分,所以,找个时间,把makefile修改一下吧,看起来真特么的吓人3800行代码摆在那里。。都是些火星文.. ; \ < > /   。。。。。我勒个去!!

还是简单总结一下吧,

1、          什么之前的版本号啊,输出固定的一些变量,加载一些文件就不谈了。。

ALL += $(obj)u-boot.srec $(obj)u-boot.bin$(obj)System.map $(U_BOOT_NAND) $(U_BOOT_ONENAND)

all:              $(ALL)

我们需要u-boot.bin,找到它的依赖

$(obj)u-boot.bin: $(obj) u-boot

             $(OBJCOPY)${OBJCFLAGS} -O binary $< $@

找到它的依赖

$(obj)u-boot: depend$(SUBDIRS) $(OBJS) $(LIBBOARD) $(LIBS) $(LDSCRIPT) $(obj)u-boot.lds
             $(GEN_UBOOT)
ifeq ($(CONFIG_KALLSYMS),y)
             smap=`$(callSYSTEM_MAP,u-boot) | \
                    awk'$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\\\000"}'` ; \
             $(CC)$(CFLAGS) -DSYSTEM_MAP="\"$${smap}\"" \
                    -ccommon/system_map.c -o $(obj)common/system_map.o
             $(GEN_UBOOT)$(obj)common/system_map.o
Endif


它的依赖就比较多了depend $(SUBDIRS) $(OBJS) $(LIBBOARD) $(LIBS)$(LDSCRIPT) $(obj)u-boot.lds

找到这依赖:

depend dep:  $(TIMESTAMP_FILE)$(VERSION_FILE) $(obj)include/autoconf.mk

            fordir in $(SUBDIRS) cpu/$(CPU) $(dir $(LDSCRIPT)) ; do \

                   $(MAKE)-C $$dir _depend ; done

这里循环进入变量SUBDIRS指定的子目录,执行make .depend命令

接下来对应着依赖都是些这样的东西。。

$(SUBDIRS):  depend
            $(MAKE)-C $@ all
$(OBJS):   depend
            $(MAKE)-C cpu/$(CPU) $(if $(REMOTE_BUILD),$@,$(notdir $@))
$(LIBBOARD):      depend $(LIBS)
            $(MAKE)-C $(dir $(subst $(obj),,$@))
$(LIBS):    depend$(SUBDIRS)
            $(MAKE)-C $(dir $(subst $(obj),,$@))
$(LDSCRIPT): depend
            $(MAKE)-C $(dir $@) $(notdir $@)
$(obj)u-boot.lds: $(LDSCRIPT)


            $(CPP)$(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@

好吧,只知道大概的流程了,暂时懒得看了,眼睛涨得痛。。。。。收工                                                                               

 

 

 

2013-1-29

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值