免费网页游戏网站,中国菲律宾关系现状,网站开发项目案例,视觉做的比较好的国外网站一. uboot顶层 Makefile文件 uboot顶层 Makefile#xff0c;就是 uboot源码工程的根目录下的 Makefile文件。 本文继续对 uboot顶层 Makefile的前期准备工作进行介绍。续上一篇文章内容的学习#xff0c;如下#xff1a;
uboot顶层Makefile前期所做工作说明二_凌肖战的博…一. uboot顶层 Makefile文件 uboot顶层 Makefile就是 uboot源码工程的根目录下的 Makefile文件。 本文继续对 uboot顶层 Makefile的前期准备工作进行介绍。续上一篇文章内容的学习如下
uboot顶层Makefile前期所做工作说明二_凌肖战的博客-CSDN博客 本文主要 了解 uboot顶层 Makefile前期所做的部分工作 包括如下内容
设置目标架构、交叉编译器和配置文件调用 scripts/Kbuild.include交叉编译工具变量设置。 二. Makefile 前期所做的内容 8. 设置目标架构、交叉编译器和配置文件 编 译 uboot 的 时 候 需 要 设 置 目 标 板 架 构 和 交 叉 编 译 器 “ make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- ” 就是用于设置 ARCH 和 CROSS_COMPILE 。 顶层 Makefile 中代码如下 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 第 245 行判断 HOSTARCH 和 ARCH 这两个变量是否相等主机架构 ( 变量 HOSTARCH) 是 x86_64 而我们编译的是 ARM 版本 uboot 两个不相等。 第 249 行定义变量 KCONFIG_CONFIG uboot 是可以配置 的这里设置配置文件为 .config 。 注意.config 默认是没有的需要使用命令“make xxx_defconfig” 对 uboot 进行配置配 置完成以后就会在 uboot 根目录下生成.config。 默认情况下.config 和 xxx_defconfig 内容是一样的因为.config 就是从 xxx_defconfig 复制过来的。如果后续自行调整 了 uboot 的一些配置参数那么这些新的配置参数就添加到了.config 中而不是 xxx_defconfig。 相当于 xxx_defconfig 只是一些初始配置而 .config 的内容才是实时有效的配置。 可以看出每次编译 uboot 的时候都要在 make 命令后面设置ARCH 和 CROSS_COMPILE使用起来很麻烦可以直接修改顶层 Makefile所以可以在这里加入配置目标架构 ARCH 和 交叉编译器CROSS_COMPILE的值。 上面 代码加入ARCH与CROSS_COMPILE的配置后如下所示 245 ifeq ($(HOSTARCH),$(ARCH))
246 CROSS_COMPILE ?
247 endif249 ARCH arm
250 CROSS_COMPILE arm-linux-gnueabihf-252 KCONFIG_CONFIG ? .config
253 export KCONFIG_CONFIG 9. 调用 scripts/Kbuild.include 主 Makefile 会调用文件 scripts/Kbuild.include 这个文件顶层 Makefile 中代码如下 330 # We need some generic definitions (do not try to remake the file).
331 scripts/Kbuild.include: ;
332 include scripts/Kbuild.include 上面的 Makefile 中使用“ include ”包含了文件 scripts/Kbuild.include而 Kbuild.include 文件里面定义了很多变量。 在 uboot 的编译过程中会用到 scripts/Kbuild.include 中的这些变量后面用到的时候再分析。 10. 交叉编译工具变量设置 上面我们只是设置了 CROSS_COMPILE 的名字但是交叉编译器其他的工具还没有设置 顶层 Makefile 中相关代码如下 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 的前期准备内容。