Linux Kernel Makefiles介绍
本文介绍 Linux 内核 Makefiles 的一些基础内容。
Makefiles 包括:
Linux 内核顶层的 Makefile 文件递归访问内核源代码的子目录。
每个子目录都有一个 kbuild Makefile 文件,根据 .config 文件内容构建内置或模块化目标。
arch/$(ARCH)/Makefile 文件向顶层 Makefile 提供特指定的体系结构信息。
scripts/Makefile.* 文件定义了 kbuild Makefile 构建内核的所有定义和规则等。
Linux 内核编译完成后,最终生成 vmlinux 和 modules 。
Linux 内核中的大多数 Makefile 都使用 kbuild 基础结构, kbuild 文件的首选名称是 Makefile 。如果 Makefile 和 kbuild 文件都存在,则使用 kbuild 文件。
目标定义是 kbuild Makefile 里的核心部分,定义了要构建的文件、特殊的编译选项和递归输入的任何子目录。
例:
kbuild Makefile 将编译所有 $(obj-y) 文件,然后调用 $(AR)rcSTP 将这些文件合并到 built-in.a 文件中。
built-in.a 中不包括符号表,稍后将通过 scripts/link-vmlinux.sh 脚本链接到 vmlinux 文件中。
在 Linux 内核引导期间,将按照链接顺序调用某些函数(例: module_init() 等)。
参考:
Documentation/kbuild/makefiles.txt
2024-10-28 广告