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 来构建内核。