我目前正在尝试了解Linux内核的构建过程。在查看Makefile时,我在表格中找到了几条规则
scripts_basic:
$(Q)$(MAKE) $(build)=scripts/basic
$(Q)rm -f .tmp_quiet_recordmcount
所有递归调用其他make进程,并将目录传递给进程。同时,似乎有一个变量,它被传递,表明如何处理子目录($(build)
部分。
看看make过程,据我所知,这似乎总是obj
,到目前为止,在make过程中我找不到这个变量的任何其他值。此外,我似乎无法找到设置此变量的任何位置。
那么这个变量的用途是什么以及它是如何使用的(例如,设置和处理的位置)。
答案 0 :(得分:1)
不完全是。相关位在scripts/Kbuild.include
中,表示
build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
这意味着如果$(KBUILD_SRC)
不为空,则scripts/Makefile.build
的路径将作为绝对路径(或至少具有可从工作目录中找到的路径)给出内核源代码树顶部的路径。据我所知,这是为了让子make使用相同的Makefile并避免使用相同的make代码几十次。