Linux内核Makefile文件分析
Linux内核Makefile文件主要有3个作用:
(1)决定编译哪些文件
(2)如何编译这些文件
(3)如何连接这些文件
Linux内核中Makefile 主要包含以下5类文件,作用分别为:
Linux 内核的编译过程从顶层Makefile开始,然后递归进入各级子目录调用他们的Makefile:
- 在顶层Makefile中Linux内核源码子目录被分为:init-y、drivers-y、net-y、libs-y、core-y,-y表示编译进内核,-m表示编译成模块,空则不编译,编译时依次进入各个目录下进行编译,每个子目录生成一个build-in.o(libs-y 可能生成lib.a)。
- arch/$(ARCH)/Makefile 通过:include $(srctree)/arch/$(ARCH)/Makefile 被包含到顶层Makefile
- .config 文件通过 -include include/config/auto.conf 间接包含到到顶层Makefile中
- 编译交叉工具链可以在执行make时通过参数传入,也可以通过在顶层Makefile中指定,或者在执行make menuconfig 时进行设置。
make ARCH=arm CROSS_COMPILE=arm-linu-
或
ARCH ?= arm CROSS_COMPILE ?= arm-linux-