u-boot-1.1.6分析(二)编译链接过程

分析顶层Makefile:

117行包含了配置过程生成的config.mk文件:

include $(OBJTREE)/include/config.mk

选择对应的交叉编译工具链

ifndef CROSS_COMPILE	
ifeq ($(HOSTARCH),ppc)
CROSS_COMPILE =
else
ifeq ($(ARCH),ppc)
CROSS_COMPILE = powerpc-linux-
endif
ifeq ($(ARCH),arm)
CROSS_COMPILE = arm-linux-
endif
……
endif

组织链接对象

OBJS  = cpu/$(CPU)/start.o	#组织链接文件,第一个是start.o
ifeq ($(CPU),i386)
OBJS += cpu/$(CPU)/start16.o
……

 

组织库文件

LIBS  = lib_generic/libgeneric.a	
LIBS += board/$(BOARDDIR)/lib$(BOARD).a
……

 

生成bin文件的依赖是$(obj)u-boot

生成$(obj)u-boot的依赖是各个子目录、目标文件、库文件、链接文件

$(obj)u-boot.bin:	$(obj)u-boot	
		$(OBJCOPY) ${OBJCFLAGS} -O binary $< $@

……

$(obj)u-boot:		depend version $(SUBDIRS) $(OBJS) $(LIBS) $(LDSCRIPT)	
		UNDEF_SYM=`$(OBJDUMP) -x $(LIBS) |sed  -n -e 's/.*\(__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
		cd $(LNDIR) && $(LD) $(LDFLAGS) $$UNDEF_SYM $(__OBJS) \
			--start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
			-Map u-boot.map -o u-boot

分析Makefile逐一替换依赖项,可以得到链接命令

配置后执行make命令,在输出内容的最后也可以看到链接命令

链接命令的一部分是:

arm-linux-ld -Bstatic -T /home/book/Desktop/new_pro/two/u-boot-1.1.6/board/smdk2410/u-boot.lds -Ttext 0x33F80000  $UNDEF_SYM cpu/arm920t/start.o 

 

从链接命令可以知道

1、链接脚本:u-boot-1.1.6/board/smdk2410/u-boot.lds
2、链接的第一个文件:cpu/arm920t/start.S

结合链接脚本可以知道,链接地址为:0x33F80000 + 0x00000000

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值