我目前正试图了解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/

10-16 04:32