Makefile 了解kbuild构建过程如何工作
我熟悉make和kbuild,以及构建系统的工作原理。但是我很难理解目标是如何建立的 例如,在Kbuild中,如果要在目录中生成一个对象文件,则会有一个makefile,其中包含以下内容:Makefile 了解kbuild构建过程如何工作,makefile,kbuild,Makefile,Kbuild,我熟悉make和kbuild,以及构建系统的工作原理。但是我很难理解目标是如何建立的 例如,在Kbuild中,如果要在目录中生成一个对象文件,则会有一个makefile,其中包含以下内容: obj-$(CONFIG_FOO) += foo.o 这计算为obj-y/m并向其添加foo.o,我认为这个构建文件是使用submake调用的,然后主生成文件将使用obj-y或obj-m生成所有对象目标,对吗 我的问题是通常可以从主makefile/build文件传递到它的子make(即导出),但是obj
obj-$(CONFIG_FOO) += foo.o
这计算为obj-y/m
并向其添加foo.o
,我认为这个构建文件是使用submake
调用的,然后主生成文件将使用obj-y
或obj-m
生成所有对象目标,对吗
我的问题是通常可以从主makefile/build文件传递到它的子make(即
导出
),但是obj-y
变量在很多地方都有定义,所以如何在所有这些子make
调用中构造或跟踪它的值 在深入研究了Busybox的整个构建系统之后,我想我理解了它背后的逻辑,因此我发现:
- 脚本目录中有共享的makefile(例如makefile.build、kbuild.include…等),其中包含公共规则、生成配置和其他内容
- 这些共享makefiles是构建Kbuild makefiles的文件(例如,通常包含代码的文件,如
)obj-$(CONFIG\u FOO)+=FOO.o
- 工作原理:
- 主makefile对
执行子Make调用,并将要生成的文件夹的路径/dir(即生成makefile.build
)作为命令行变量(build-in.o
)obj
文件创建用于编译对象目标文件并将它们链接到Makefile.build
build-in.o
- 然后,主makefile从子目录收集.o中的所有
对象,并将它们链接在一起
- 主makefile对