我目前正试图了解Linux内核的构建过程。在查看makefile时,我发现表单中有几个规则
scripts_basic:
$(Q)$(MAKE) $(build)=scripts/basic
$(Q)rm -f .tmp_quiet_recordmcount
它们都递归地调用其他make进程并将目录传递给进程。同时,似乎有一个变量被传递,指示如何处理子目录(
$(build)
部分)。在make过程中,据我所见,这似乎总是
obj
,在make过程中,到目前为止我找不到这个变量的任何其他值。而且,我似乎找不到设置此变量的任何位置。那么这个变量到底是用来做什么的,它是如何使用的(例如,在哪里设置和处理的)。
最佳答案
不完全是。相关位在scripts/Kbuild.include
中,它表示
build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
这意味着,如果
$(KBUILD_SRC)
不是空的,scripts/Makefile.build
的路径是以绝对路径的形式给出的(或者至少有一个可以从工作目录找到的路径),方法是在内核源代码树的顶部添加路径。据我所知,这是为了使子make都使用相同的Makefile,并避免多次使用相同的make代码。关于linux - 在Linux内核Makefile中构建变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27193365/