单龙芯3A3000-7A1000PMON研究学习-(11)撸起袖子干-make tgt=rom的编译过程

1. 今天来分析一下makefile,看看如何编译出执行文件pmon的。

先贴几张图,makefile的内容,这是一些依赖关系

 图一

   图二 

图三 

图四 

图五 

2.图一解释

rom这个目标又三个依赖,clean,$START,zloader.o

先执行依赖,再去执行后面的命令。

clean这个目标就不解释了吧,反正就是删除。。。。(图二)

3.图三,start.o是如何生成的?

3.1首先删除原来的start.o

3.2 生成链接脚本ld.script

3.3 到Targets/Bonito3a3000_7a/compile/Bonito/目录中执行makefile

3.4 拷贝start.o到当前路径下。

4.图四,zloader.o是如何生成的?

zloader.o 有依赖。

其中图五的目标也是临时生成的。他的依赖是pmon.bin

zloader.o 是由zloader.c生成,但是它是要先完成依赖。

5.这里要考虑pmon.bin是如何生成的。

 这里有一些变量,还得展开,这部分定义在根目录下的makefile.inc文件。

 

按照变量展开后:

pmon:Makefile ${START} crtbegin.o param.o ioconf.o ri.o ${OBJS} ${LIBC} ${LIBM} ${LIBZ} crtend.o     (这里的几个变量不展开了,内容太多,为什么Makefile也是依赖呢?这个Makefile中指定了头文件的包含关系,在# DO NOT DELETE之后说明的那一大段中)

rm -f $@  (第一条命令,删除原来生成的pmon文件,$@表示pmon这个目标)

@echo ${LD} ${LFLAGS} -o $@ ${LIBDIR} '${SYSTEM_OBJ}' vers.o;    (这里是打印提示信息)

${LD} ${LFLAGS} -o $@ ${LIBDIR} ${SYSTEM_OBJ} vers.o -L../../../../examples/math/ -lgcc   (执行ld指令,生成pmon文件)

@${SIZE} $@         (使用size命令输出pmon文件大小)

 chmod 755 $@ ;     (修改权限)

${OBJCOPY} -O binary $@ $@.bin (生成pmon.bin文件)    生成bin文件,后来需要解压的c数组,

这个makefile之前被执行过。所以pmon.bin之前就生成了。(第1步的图三中。往上翻)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大智兄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值