linux kernel makefile 分析 - 2

上一篇:https://www.cnblogs.com/zhangzhiwei122/p/16025859.html

背景说明

版本:

5.10.0 - 下面分析中 使用的行号,都是 参考 这个 版本的 Makefile 。

在线浏览: https://lxr.missinglinkelectronics.com/linux/Makefile

 

使用场景:

在源码文件夹下面建立一个build 文件夹,然后使用 O=build 

mkdir build

make O=build

 

讨论首次使用和最后一次使用

前文中提到两个变量  sub_make_done     need-sub-make  来控制 首次使用 和 最后一次使用。

依据这两个变量,将整个 Makefile 文件  分为 3 部分。

 

 

 

需要注意,用两个变量控制,不是一个变量控制,则  首次 和  最后一次 这两个概念  就不是 对立的,即可以同时存在。 

 

1、首次使用就是最后一次使用,即这个Makefile 只使用一次。

在 首次使用  部分,黄色的 37 ~ 188 中,没有设置 need-sub-make 为 1。

见前文,need-sub-make 被设置为1 的3中情况,若这三种情况都没达到,则need-sub-make 就是空的。

 

则,下面的   绿色的191 ~ 1948   也就被使用了。

 

这时,整个Makefile 就可以看作一个 部分,即 黄色部分和绿色部分都  可见。

 

 

2、Makefile 被使用两次及以上

2.1  首次使用

     在 首次使用  部分,黄色的 37 ~ 188 中, 有设置 need-sub-make 为 1。则 下面的 191 ~ 1948 部分都被忽略。相当于第一次make 可见的只有 灰色和黄色部分。

 

 

2.2  第二次使用

 由于 首次使用时,export sub_make_done=1 ,第二次启动make工具,有这个变量,37 ~ 188 部分内容,对第二次make工具不可见。

 由于need-sub-make 没有被export ,所以第二次启动的 make 工具中,这个变量为空。 191 ~ 1948 部分内容对第二次make工具可见

 

 

这 是我们的使用场景中的情况 

第一次make 工具 可见 37 ~ 188 部分内容,abs_objtree和abs_srctree 不相同,导致 设置了  need-sub-make=1,导致 191 ~ 1948 部分内容不可见。然后 启动第二个make工具,

 

第二个make 工具仅仅可见通用部分和 191 ~ 1948 部分内容

 

下一篇   191 ~ 1949 行分析

https://www.cnblogs.com/zhangzhiwei122/p/16026987.html

 

posted @ 2022-03-19 12:12  张志伟122  阅读(239)  评论(0编辑  收藏  举报