英文

Kbuild

输出文件

modules.order

此文件记录模块在 Makefile 中出现的顺序。这被 modprobe 用于确定性地解析匹配多个模块的别名。

modules.builtin

此文件列出所有构建到内核中的模块。这被 modprobe 用于在尝试加载某些内置模块时不会失败。

modules.builtin.modinfo

此文件包含所有构建到内核中的模块的 modinfo。与单独模块的 modinfo 不同,所有字段都以模块名称为前缀。

modules.builtin.ranges

此文件包含所有构建到内核中的模块的地址偏移范围(每个 ELF 段)。与 System.map 一起,它可以用于将模块名称与符号关联起来。

环境变量

KCPPFLAGS

预处理时传递的附加选项。预处理选项将用于 kbuild 执行预处理的所有情况,包括构建 C 文件和汇编文件。

KAFLAGS

汇编器的附加选项(用于内置和模块)。

AFLAGS_MODULE

模块的附加汇编器选项。

AFLAGS_KERNEL

内置的附加汇编器选项。

KCFLAGS

C 编译器的附加选项(用于内置和模块)。

KRUSTFLAGS

Rust 编译器的附加选项(用于内置和模块)。

CFLAGS_KERNEL

当用于编译编译为内置的代码时,$(CC) 的附加选项。

CFLAGS_MODULE

用于 $(CC) 的附加模块特定选项。

RUSTFLAGS_KERNEL

当用于编译编译为内置的代码时,$(RUSTC) 的附加选项。

RUSTFLAGS_MODULE

用于 $(RUSTC) 的附加模块特定选项。

LDFLAGS_MODULE

链接模块时用于 $(LD) 的附加选项。

HOSTCFLAGS

构建主机程序时传递给 $(HOSTCC) 的附加标志。

HOSTCXXFLAGS

构建主机程序时传递给 $(HOSTCXX) 的附加标志。

HOSTRUSTFLAGS

构建主机程序时传递给 $(HOSTRUSTC) 的附加标志。

HOSTLDFLAGS

链接主机程序时传递的附加标志。

HOSTLDLIBS

构建主机程序时链接的附加库。

USERCFLAGS

编译 userprogs 时用于 $(CC) 的附加选项。

USERLDFLAGS

链接 userprogs 时用于 $(LD) 的附加选项。 userprogs 使用 CC 链接,因此 $(USERLDFLAGS) 应包含 “-Wl,” 前缀(如果适用)。

KBUILD_KCONFIG

将顶层 Kconfig 文件设置为此环境变量的值。默认名称为 “Kconfig”。

KBUILD_VERBOSE

设置 kbuild 详细程度。可以分配与 “V=...” 相同的值。

有关完整列表,请参见 make help。

设置 “V=...” 优先于 KBUILD_VERBOSE。

KBUILD_EXTMOD

设置在构建外部模块时查找内核源代码的目录。

设置 “M=...” 优先于 KBUILD_EXTMOD。

KBUILD_OUTPUT

指定构建内核时的输出目录。

当针对单独构建目录中的预构建内核构建外部模块时,此变量还可用于指向内核输出目录。请注意,这 *不* 指定外部模块本身的输出目录。(为此请使用 KBUILD_EXTMOD_OUTPUT。)

还可以使用 “O=...” 指定输出目录。

设置 “O=...” 优先于 KBUILD_OUTPUT。

KBUILD_EXTMOD_OUTPUT

指定外部模块的输出目录。

设置 “MO=...” 优先于 KBUILD_EXTMOD_OUTPUT。

KBUILD_EXTRA_WARN

指定额外的构建检查。可以通过从命令行传递 W=... 来分配相同的值。

有关受支持值的列表,请参见 make help

设置 “W=...” 优先于 KBUILD_EXTRA_WARN。

KBUILD_DEBARCH

对于 deb-pkg 目标,允许覆盖 deb-pkg 部署的正常启发式方法。通常,deb-pkg 尝试基于 UTS_MACHINE 变量以及某些架构上的内核配置来猜测正确的体系结构。KBUILD_DEBARCH 的值被假定为(未检查)有效的 Debian 体系结构。

KDOCFLAGS

在构建期间为 kernel-doc 检查指定额外的(警告/错误)标志,请参阅 scripts/kernel-doc 了解支持哪些标志。请注意,这(当前)不适用于文档构建。

ARCH

将 ARCH 设置为要构建的架构。

在大多数情况下,架构名称与 arch/ 目录中找到的目录名称相同。

但是,某些架构(例如 x86 和 sparc)具有别名。

  • x86:i386 用于 32 位,x86_64 用于 64 位

  • parisc:parisc64 用于 64 位

  • sparc:sparc32 用于 32 位,sparc64 用于 64 位

CROSS_COMPILE

指定 binutils 文件名的可选固定部分。CROSS_COMPILE 可以是文件名的一部分或完整路径。

CROSS_COMPILE 也用于某些设置中的 ccache。

CF

sparse 的附加选项。

CF 通常在命令行上像这样使用

make CF=-Wbitwise C=2

INSTALL_PATH

INSTALL_PATH 指定放置更新的内核和系统映射映像的位置。默认值为 /boot,但您可以将其设置为其他值。

INSTALLKERNEL

使用 “make install” 时调用的安装脚本。默认名称为 “installkernel”。

将使用以下参数调用该脚本

  • $1 - 内核版本

  • $2 - 内核映像文件

  • $3 - 内核映射文件

  • $4 - 默认安装路径(如果为空,则使用根目录)

“make install” 的实现是特定于架构的,并且可能与上述内容不同。

提供 INSTALLKERNEL 的目的是在交叉编译内核时可以指定自定义安装程序。

MODLIB

指定模块的安装位置。默认值为

$(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)

该值可以被覆盖,在这种情况下将忽略默认值。

INSTALL_MOD_PATH

INSTALL_MOD_PATH 指定 MODLIB 的前缀,用于构建根所需的模块目录重定位。这未在 makefile 中定义,但如果需要,可以将参数传递给 make。

INSTALL_MOD_STRIP

如果定义了 INSTALL_MOD_STRIP,则会导致模块在安装后被剥离。如果 INSTALL_MOD_STRIP 为 ‘1’,则将使用默认选项 --strip-debug。否则,INSTALL_MOD_STRIP 值将用作 strip 命令的选项。

INSTALL_HDR_PATH

执行 “make headers_*” 时,INSTALL_HDR_PATH 指定安装用户空间头文件的位置。

默认值为

$(objtree)/usr

$(objtree) 是保存输出文件的目录。通常使用命令行上的 “O=...” 设置输出目录。

该值可以被覆盖,在这种情况下将忽略默认值。

INSTALL_DTBS_PATH

INSTALL_DTBS_PATH 指定了安装设备树 blob 的位置,这些 blob 是构建根目录所需的重定位。它没有在 makefile 中定义,但如果需要,可以将参数传递给 make。

KBUILD_ABS_SRCTREE

Kbuild 在可能的情况下使用相对路径指向树。 例如,在源代码树中构建时,源代码树路径是“.”。

设置此标志会请求 Kbuild 使用源代码树的绝对路径。 在某些情况下这样做很有用,例如在生成带有绝对路径条目的标记文件时等等。

KBUILD_SIGN_PIN

当私钥需要时,此变量允许将密码或 PIN 传递给 sign-file 实用程序,以对内核模块进行签名。

KBUILD_MODPOST_WARN

可以设置 KBUILD_MODPOST_WARN,以避免在最终模块链接阶段出现未定义符号的错误。它将此类错误更改为警告。

KBUILD_MODPOST_NOFINAL

可以设置 KBUILD_MODPOST_NOFINAL 来跳过模块的最终链接。这仅对加速测试编译有用。

KBUILD_EXTRA_SYMBOLS

对于使用来自其他模块的符号的模块。 请参阅 构建外部模块 中的更多详细信息。

ALLSOURCE_ARCHS

对于 tags/TAGS/cscope 目标,您可以指定多个架构包含在数据库中,用空格分隔。 例如:

$ make ALLSOURCE_ARCHS="x86 mips arm" tags

要获取所有可用的架构,您还可以指定 all。 例如:

$ make ALLSOURCE_ARCHS=all tags

IGNORE_DIRS

对于 tags/TAGS/cscope 目标,您可以选择哪些目录不包含在数据库中,用空格分隔。 例如:

$ make IGNORE_DIRS="drivers/gpu/drm/radeon tools" cscope

KBUILD_BUILD_TIMESTAMP

将其设置为日期字符串会覆盖 UTS_VERSION 定义中使用的的时间戳(运行内核中的 uname -v)。 该值必须是可以传递给 date -d 的字符串。 默认值是构建期间某一时刻的 date 命令的输出。

KBUILD_BUILD_USER, KBUILD_BUILD_HOST

这两个变量允许覆盖在启动期间和 /proc/version 中显示的 user@host 字符串。 默认值分别是 whoami 和 host 命令的输出。

LLVM

如果此变量设置为 1,Kbuild 将使用 Clang 和 LLVM 实用程序而不是 GCC 和 GNU binutils 来构建内核。