Linux内核Makefile中的build变量

Linux内核Makefile中的build变量,linux,makefile,kernel,Linux,Makefile,Kernel,我目前正试图了解Linux内核的构建过程。在查看makefile时,我在表单中发现了几个规则 scripts_basic: $(Q)$(MAKE) $(build)=scripts/basic $(Q)rm -f .tmp_quiet_recordmcount 它们都递归地调用其他make进程,并将目录传递给进程。同时,似乎传递了一个变量,指示如何处理子目录(构建部分) 查看make过程,据我所知,这似乎总是obj,我在make过程中找不到该变量的任何其他值。此外,我似乎找不到

我目前正试图了解Linux内核的构建过程。在查看makefile时,我在表单中发现了几个规则

scripts_basic:
    $(Q)$(MAKE) $(build)=scripts/basic
    $(Q)rm -f .tmp_quiet_recordmcount
它们都递归地调用其他make进程,并将目录传递给进程。同时,似乎传递了一个变量,指示如何处理子目录(构建部分)

查看make过程,据我所知,这似乎总是
obj
,我在make过程中找不到该变量的任何其他值。此外,我似乎找不到设置该变量的任何位置


那么这个变量的确切用途是什么以及它是如何使用的(例如,在哪里设置和处理的)。

不完全正确。相关位在
脚本/Kbuild中。include
,其中

build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
这意味着,如果
$(KBUILD\u SRC)
不为空,则
脚本/Makefile.build
的路径将作为绝对路径提供(或者至少具有可从工作目录中找到的路径)就我所知,这是为了让子make都使用相同的Makefile,避免几十次使用相同的make代码