【问题标题】:build variable in Linux kernel MakefileLinux内核Makefile中的构建变量
【发布时间】:2014-11-28 17:15:46
【问题描述】:

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

scripts_basic:
    $(Q)$(MAKE) $(build)=scripts/basic
    $(Q)rm -f .tmp_quiet_recordmcount

它们都递归调用其他 make 进程,并将目录传递给进程。同时,好像有一个变量,传递过来,表示子目录怎么处理($(build)部分。

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

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

【问题讨论】:

    标签: linux makefile kernel


    【解决方案1】:

    不完全是。相关位在scripts/Kbuild.include 中,上面写着

    build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
    

    这意味着如果$(KBUILD_SRC) 不为空,则scripts/Makefile.build 的路径通过将路径添加到内核源代码树的顶部。据我所知,这是为了让子make都使用相同的Makefile,避免多次使用相同的make代码。

    【讨论】: