11.2.9 设置目标架构、交叉编译器和配置文件
编 译 uboot 的 时 候 需 要 设 置 目 标 板 架 构 和 交 叉 编 译 器
“ make ARCH=armCROSS_COMPILE=arm-none-linux-gnueabihf-”
就是用于设置 ARCH 和 CROSS_COMPILE,在顶层 Makefile 中代码如下:
261 # set default to nothing for native builds
262 ifeq ($(HOSTARCH),$(ARCH))
263 CROSS_COMPILE ?=
264 endif
265
266 KCONFIG_CONFIG ?= .config
267 export KCONFIG_CONFIG
第 262 行判断 HOSTARCH 和 ARCH 这两个变量是否相等,主机架构(变量 HOSTARCH)是x86_64,而我们编译的是 ARM 版本 uboot,肯定不相等。
所以 CROSS_COMPILE= arm-none-linux-gnueabihf-。从示例代码 11.2.9.1 可以看出,每次编译 uboot 的时候都要在 make 命令后面设置 ARCH 和 CROSS_COMPILE,使用起来很麻烦,可以直接修改顶层 Makefile,在里面加入ARCH 和 CROSS_COMPILE 的定义。
使用起来很麻烦,可以直接修改顶层 Makefile,在里面加入 ARCH 和 CROSS_COMPILE 的定义,如图 :
这样就不用每次编译的时候都要在 make 命令后面定义 ARCH 和 CROSS_COMPILE。
第 266 行定义变量 KCONFIG_CONFIG。
uboot 是可以配置的,这里设置配置文件为.config,.config 默认是没有的,需要使用命令“make xxx_defconfig”对 uboot 进行配置,配置完成以后就会在 uboot 根目录下生成.config。
默认情况下.config 和xxx_defconfig 内容是一样的,因为.config 就是从 xxx_defconfig 复制过来的。如果后续自行调整了 uboot 的一些配置参数,那么这些新的配置参数就添加到了.config 中,而不是 xxx_defconfig。相当于 xxx_defconfig 只是一些初始配置,而.config 里面的才是实时有效的配置。