【问题标题】:Understanding how kbuild build process work了解 kbuild 构建过程是如何工作的
【发布时间】:2014-04-20 00:29:46
【问题描述】:

我熟悉 make 和 kbuild,以及构建系统的工作原理。但是我很难理解对象目标是如何构建的!?

例如,在 Kbuild 中,如果你想在一个目录中生成一个目标文件,你将有一个 makefile,其内容如下:

obj-$(CONFIG_FOO) += foo.o 

计算结果为obj-y/m 并将foo.o 添加到其中,我认为此构建文件是使用submake 调用的,然后主makefile 将使用@ 生成所有对象目标 987654325@ 或 obj-m(取决于您正在构建的方式/内容),对吗?

我的问题是通常你可以从主makefile/build文件传递到它的子make(即export),但是obj-y变量在很多地方都有定义,所以它是如何定义的?在所有这些submake 调用中构造或跟踪的值?

【问题讨论】:

    标签: makefile kbuild


    【解决方案1】:

    在深入研究了 Busybox 的整个构建系统之后,我想我理解了它背后的逻辑,所以我发现了以下内容:

    • 脚本目录中有共享的 makefile(例如 makefile.build、kbuild.include…等),其中包含通用规则、构建配置和其他内容。
    • 这些共享的 makefile 是构建 Kbuild makefile 的文件(例如,通常包含 obj-$(CONFIG_FOO) += foo.o 等代码的文件)
    • 工作原理:
      • main makefileMakefile.build 执行submake 调用,并传递要构建的文件夹的路径/目录(即生成built-in.o)为命令行变量 (obj)
      • Makefile.build 文件创建通用规则,用于编译目标目标文件并将它们链接到 built-in.o
      • 然后主makefile从子目录中收集所有object-in.o并将它们链接在一起

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多