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