奇怪的Makefile,需要说明

码头工人

我正在尝试编译内核,但无法弄清楚其Makefile如何工作:https//github.com/LineageOS/android_kernel_sony_msm8994/blob/cm-14.1/scripts/Makefile.build

由于我在构建时遇到此错误:在C中无法构建自定义Linux / Android / LineageOS内核,因此我现在尝试了解第44行。

  1. 为什么.build .clean在主Makefile中有几个扩展名为etc的Makefile,而不是将这些操作作为“目标”?

  2. 我如何弄清楚第一个$(obj)var指的是什么?

  3. 数学语法是:=“按定义相等”而不是=特定于开发人员吗?如果我是对的,我确实在数学笔记或符号语言(例如Wolfram / Mathematica)上看到了这一点,但从未在程序中看到过。

  4. 为什么PHONY :=像doc中那样是变量而不是“动作类型”?应该将其写.PHONY:在文件的最后一行。我没有这个把戏。

  5. 为什么__build在值的前面有2个下划线PHONY

感谢您的精确

疯狂的科学家
  1. 因为编写makefile的人希望将其分解为单独的文件。也许它们包含在其他多个文件中,或者他们只是想使顶层Makefile更加整洁可读。
  2. 您可以使用该-p选项运行make,它将打印makefile中所有变量的所有值。
  3. 我不太明白这个问题::=makefile中运算符用于简单扩展的变量分配。有关更多信息,请参见GNU make手册
  4. 这会将变量设置PHONY为包含一些内容。这只是一个普通的变量赋值,这里没有任何幻想。想必其他地方在Makefile中会出现一条线:.PHONY: $(PHONY)将使所有目标中的PHONY变量假。
  5. 因为编写makefile的人想使用两个下划线。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章