openwrt顶层makefile分析

openwrt顶层makefile分析

ID:5877881

大小:28.50 KB

页数:2页

时间:2017-12-27

openwrt顶层makefile分析_第1页
openwrt顶层makefile分析_第2页
资源描述:

《openwrt顶层makefile分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、openwrt这里主要介绍openwrt的主Makefile,并未对各个目录下的Makefile和相关文件进行介绍。在Makefile里是两个主要的分支,由if语句根据OPENWRT_BUILD的值进行不同的处理。第一个部分主要是执行编译前的准备,第二个部分是执行编译。打开Makefile文件,可以看到默认的make目标world,这个目标没有依赖文件和执行命令。执行make的时候,首先进入第一个部分,此时OPENWRT_BUILD的值为0,然后将OPENWRT_BUILD的值赋为1,在这里用到了override指示符,ov

2、erride指示符的作用的忽略make命令行的参数的赋值,可以对该变量进行赋值。载入include下的相关文件,在toplevel.mk可以看到%::@+$(PREP_MK)$(NO_TRACE_MAKE)-r-sprereq@+$(SUBMAKE)-r$@默认的目标就会执行这里。在toplevel.mk的顶部定义了PREP_MK=OPENWRT_BUILD=QUIET=0,将OPENWRT_BUILD的值赋为0。在执行@+$(PREP_MK)$(NO_TRACE_MAKE)-r-sprereq命令的时候,在make命令行里

3、有$(PREP_MK)变量,而由于OPENWRT_BUILD的值为0,在verbose.mk文件里NO_TRACE_MAKE:=$(MAKE)V=99,所以会执行顶层目录的Makefile第一个分支部分的目标prereq,即toplevel.mk文件中的目标prereq:prereq::prepare-tmpinfo.config@+$(MAKE)-r-stmp/.prereq-build$(PREP_MK)@+$(NO_TRACE_MAKE)-r-s$@这里会进行一些编译前的准备工作,然后执行@+$(NO_TRACE_MA

4、KE)-r-s$@,再次去执行顶层Makefile,此时,并没有$(PREP_MK)变量,所以会执行顶层Makefile的第一个部分,载入include下的相关文件,和一些必要的Makefile文件,在顶层Makefile去寻找prereq目标,prereq:$(target/stamp-prereq)tmp/.prereq_packages处理它的依赖文件。然后再接着执行toplevel.mk%::@+$(PREP_MK)$(NO_TRACE_MAKE)-r-sprereq@+$(SUBMAKE)-r$@在@+$(SUBM

5、AKE)-r$@命令中也没有$(PREP_MK)变量,所以在顶层Makefile的第二个部分,寻找Makefile的默认目标,即world。world:prepare$(target/stamp-compile)$(package/stamp-cleanup)$(package/stamp-compile)$(package/stamp-install)$(package/stamp-rootfs-prepare)$(target/stamp-install)FORCE$(_SINGLE)$(SUBMAKE)-rpackag

6、e/index根据各个依赖文件进行相应的编译,最终完成编译。在顶层Makefile里比较麻烦的是,将Makefile分为了两个主要分支,在每个分支里通过include载入相应的文件,在这些文件里包含相应的目标执行命令,在命令中多次用make+目标+参数的方式,则会再次执行Makefile文件,就形成了Makefile的嵌套执行。在嵌套执行的过程中,通过变量OPENWRT_BUILD来区分是执行顶层Makefile的那个部分,如果在make命令行中有OPENWRT_BUILD为0,则执行第一个部分,没有加OPENWRT_BUI

7、LD变量则执行第二个部分。由于OPENWRT_BUILD是make命令行参数,所以在Makefile中如果要改变它的值,就用到了override指示符。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。