【问题标题】:How to generate a list of source files compiled for a particular board configuration in u-boot sources?如何在 u-boot 源代码中生成为特定板配置编译的源文件列表?
【发布时间】:2018-10-26 08:28:59
【问题描述】:

U-boot 是针对不同架构和 SoC 的引导加载程序,有多个源文件,只有其中一些可以成为特定板的最终可执行文件。例如,在 arch/ 目录中,每个架构都有一个目录。如果构建是针对 ARM 架构 SoC,则只有 arch/arm/ 中的部分文件会被编译成可执行文件。

哪些源文件被编译成可执行文件取决于构建的配置。此配置由 configs/ 目录中的文件控制。对于 BeagleBone Black,此文件为 configs/am335x_boneblack_defconfig。该文件定义了几个在 Makefile 中使用的变量。

configs/am335x_defconfig的一部分如下图:

CONFIG_ARM=y
CONFIG_ARCH_OMAP2PLUS=y
CONFIG_TI_COMMON_CMD_OPTIONS=y
CONFIG_AM33XX=y
CONFIG_DISTRO_DEFAULTS=y

这些文件中定义的变量稍后会在其他 Makefile 中引用。比如上面定义的CONFIG_AM33XX变量在/arch/arm/mach-omap2/am33xx/Makefile中引用如下:

obj-$(CONFIG_AM33XX)    += clock_am33xx.o
obj-$(CONFIG_TI814X)    += clock_ti814x.o
obj-$(CONFIG_AM43XX)    += clock_am43xx.o

ifneq ($(CONFIG_AM43XX)$(CONFIG_AM33XX),)
obj-y   += clock.o
endif

我猜是在执行命令时

$make am335x_boneblack_defconfig

变量 CONFIG_AM33XX 的值在 Makefile 的一些临时副本中被替换,因此上述 makefile 的内容被替换为

obj-y += clock_am33xx.o

仅通过在所有 Makefile 中搜索配置变量来确定最终可执行文件中包含哪些源文件是一项繁琐的任务。 我需要一种方法来创建自动为特定配置文件编译的源文件列表。有办法吗?

【问题讨论】:

    标签: makefile config u-boot


    【解决方案1】:

    只需进行干净的构建并搜索所有目标文件:

    make mrproper
    make foo_defconfig
    make -j6
    find . -name '*.o'
    

    您可能希望排除目录 tools/scripts/

    【讨论】:

    • 有没有一种简单的方法可以将相关的源文件(.o 可以从 ASM 文件或 C 文件生成)收集到单独的目录中?
    猜你喜欢
    • 2016-05-27
    • 2018-03-24
    • 1970-01-01
    • 2014-08-13
    • 2019-01-19
    • 2020-07-27
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    相关资源
    最近更新 更多