我熟悉make和kbuild,以及构建系统的工作原理。但我很难理解对象目标的构建方式!?
例如,在Kbuild中,如果要在目录中生成目标文件,则可以使用类似以下内容的makefile:
obj-$(CONFIG_FOO) += foo.o
这评估为obj-y/m
并向其添加foo.o
,我认为使用submake
调用此构建文件,然后主makefile将生成所有对象目标< / strong>使用obj-y
或obj-m
(取决于您正在构建的方式/内容),对吗?
我的问题是通常你可以从主makefile / build文件传递到它的submake(即export
),但obj-y
变量在很多地方定义那么如何在所有这些submake
调用中构造或跟踪它的值?
答案 0 :(得分:3)
在深入了解Busybox的整个构建系统之后,我想我理解它背后的逻辑,所以这就是我发现的:
obj-$(CONFIG_FOO) += foo.o
等代码的makefile)Makefile.build
执行 submake 调用,并传递要构建的文件夹的路径/目录(即生成{{1} } from)作为命令行变量(built-in.o
)obj
文件创建用于编译对象目标文件并将其链接到Makefile.build
built-in.o
并将它们链接在一起