uboot顶层 Makefile,就是 uboot源码工程的根目录下的 Makefile文件。
本文继续对 uboot顶层 Makefile的前期准备工作进行介绍。续上一篇文章内容的学习,如下:
uboot顶层Makefile前期所做工作说明二_凌肖战的博客-CSDN博客
本文主要 了解 uboot顶层 Makefile前期所做的部分工作, 包括如下内容:
设置目标架构、交叉编译器和配置文件,调用 scripts/Kbuild.include,交叉编译工具变量设置。
244 # set default to nothing for native builds
245 ifeq ($(HOSTARCH),$(ARCH))
246 CROSS_COMPILE ?=
247 endif
248
249 KCONFIG_CONFIG ?= .config
250 export KCONFIG_CONFIG
置完成以后就会在 uboot 根目录下生成.config。
默认情况下,.config 和 xxx_defconfig 内容是一样的,因为.config 就是从 xxx_defconfig 复制过来的。如果后续自行调整 了 uboot 的一些配置参数,那么这些新的配置参数就添加到了.config 中,而不是 xxx_defconfig。 相当于 xxx_defconfig 只是一些初始配置,而 .config 的内容才是实时有效的配置。
可以看出,每次编译 uboot 的时候都要在 make 命令后面设置ARCH 和 CROSS_COMPILE,使用起来很麻烦,可以直接修改顶层 Makefile,所以,可以在这里加入配置目标架构 ARCH 和 交叉编译器CROSS_COMPILE的值。
245 ifeq ($(HOSTARCH),$(ARCH))
246 CROSS_COMPILE ?=
247 endif
249 ARCH = arm
250 CROSS_COMPILE = arm-linux-gnueabihf-
252 KCONFIG_CONFIG ?= .config
253 export KCONFIG_CONFIG
330 # We need some generic definitions (do not try to remake the file).
331 scripts/Kbuild.include: ;
332 include scripts/Kbuild.include
336 AS = $(CROSS_COMPILE)as
337 # Always use GNU ld
338 ifneq ($(shell $(CROSS_COMPILE)ld.bfd -v 2> /dev/null),)
339 LD = $(CROSS_COMPILE)ld.bfd
340 else
341 LD = $(CROSS_COMPILE)ld
342 endif
343 CC = $(CROSS_COMPILE)gcc
344 CPP = $(CC) -E
345 AR = $(CROSS_COMPILE)ar
346 NM = $(CROSS_COMPILE)nm
347 LDR = $(CROSS_COMPILE)ldr
348 STRIP = $(CROSS_COMPILE)strip
349 OBJCOPY = $(CROSS_COMPILE)objcopy
350 OBJDUMP = $(CROSS_COMPILE)objdump
之前设置了交叉编译器的名字前缀,基于前缀设置后,这里设置了交叉编译工具。
下一篇继续了解 uboot 顶层 Makefile 的前期准备内容。