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) 编译作为内置代码编译的代码时,要传递给 $(CC) 的附加选项。
CFLAGS_MODULE¶
用于 $(CC) 的附加模块特定选项。
RUSTFLAGS_KERNEL¶
当使用 $(RUSTC) 编译作为内置代码编译的代码时,要传递给 $(RUSTC) 的附加选项。
RUSTFLAGS_MODULE¶
用于 $(RUSTC) 的附加模块特定选项。
LDFLAGS_MODULE¶
链接模块时用于 $(LD) 的附加选项。
HOSTCFLAGS¶
构建主机程序时要传递给 $(HOSTCC) 的附加标志。
HOSTCXXFLAGS¶
构建主机程序时要传递给 $(HOSTCXX) 的附加标志。
HOSTRUSTFLAGS¶
构建主机程序时要传递给 $(HOSTRUSTC) 的附加标志。
PROCMACROLDFLAGS¶
链接 Rust proc 宏时要传递的标志。 由于 proc 宏在构建时由 rustc 加载,因此它们必须以与所使用的 rustc 工具链兼容的方式链接。
例如,当 rustc 使用与用户希望用于主机程序的 C 库不同的 C 库时,这可能很有用。
如果未设置,则默认为链接主机程序时传递的标志。
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¶
指定构建期间内核文档检查的额外(警告/错误)标志,有关支持哪些标志,请参阅 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¶
INSTALL_HDR_PATH 指定执行 “make headers_*” 时安装用户空间头文件的位置。
默认值为
$(objtree)/usr
$(objtree) 是保存输出文件的目录。 输出目录通常使用命令行上的 “O=...” 设置。
该值可以被覆盖,在这种情况下,默认值将被忽略。
INSTALL_DTBS_PATH¶
INSTALL_DTBS_PATH 指定安装设备树 blob 的位置,用于构建根所需的重定位。 这未在 Makefile 中定义,但如果需要,可以将参数传递给 make。
KBUILD_ABS_SRCTREE¶
Kbuild 使用相对路径来指向树(如果可能)。 例如,在源代码树中构建时,源代码树路径为 “.”。
设置此标志会请求 Kbuild 使用源代码树的绝对路径。 在某些情况下,这样做很有用,例如,当生成带有绝对路径条目的标记文件等时。
KBUILD_SIGN_PIN¶
如果私钥需要密码或 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 来构建内核。