U-boot 顶层Makefile 学习(2)

U-boot 顶层Makefile 学习(1)

U-boot顶层Makefile

9、设置目标架构,交叉编译器和配置文件
在编译Uboot的时候需要设置架构和交叉编译器,例如"make ARCH=arm CRPOSS_COMPILE=arm-linux-gnueabihf-",就是用于设置ARCH和CROSS_COMPILE。
在这里插入图片描述

  1. Line 250 判定主机架构和命令行输入的架构是否相同,如果相同,交叉编译器设置为空。(感觉不重要,因为下面会对其进行重复赋值)。
  2. 为了避免每次编译都要输入"ARCH=arm CRPOSS_COMPILE=arm-linux-gnueabihf-",直接在顶层Makefile中添加该信息。
    Line 253 赋给 ARCH = arm,CROSS_COMPILE = arm-linux-gnueabihf-
  3. Line 256 是配置文件.config,是一个实时有效的配置数据。

10、调用Scripts/Kbuild.include
在这里插入图片描述
这里顶层Makefile调用了scripts/Kbuild.include这个文件,在这个文件中,有许多变量,如下图所示:
在这里插入图片描述
在uboot编译过程中会使用这些变量,具体使用的时候在分析。

11、交叉编译工具变量设置
上面我们只是设置了交叉编译的名字,但是对交叉编译器的其他工具没有进行设置,具体如下:
在这里插入图片描述
这里是简单的字符串拼接,但是具体每个命令的用途是什么,还需要学习。

12、导出其它的变量
在顶层Makefile中会导出许多变量,如下:
在这里插入图片描述
其中,关键的打印出来后如下
在这里插入图片描述在这里插入图片描述
那么上面7个变量的值是从哪里来的呢?
其实是在config.mk文件中定义的
在这里插入图片描述
Line 25 ARCH := $(CONFIG_SYS_ARCH:"%"=%)
就是说提取CONFIG_SYS_ARCH 双引号之间的内容赋给ARCH
Line 26 - 37 其它同理。
在这里插入图片描述
sinclude 和 include 和-include
include类似于C 语言的include ,当运行到发生错误时,会产生致命错误让Makefile停止。
而-include和sinclude当读取的文件如果不存在的话不会报错。

13、make xxx_defconfig 过程
在编译uboot前要使用"make xxx_defconfig"来配置uboot,那么这个配置是如何运行的呢?
在这里插入图片描述

  1. Line 441行定义了变量version_h,用于保存版本号文件,此文件是自动生成。
  2. Line 442行定义了变量timestamp_h,用于保存时间戳文件,也是自动生成的
  3. 往下定义了变量no-dot-config-targets、config-targets = 0、mixed-targets = 0、dot-config = 1
  4. Line 452行将不符合no-dot-config-targets的部分过滤,MAKECMDGOALS是make的一个环境变量,这个环境变量会保存你所指向的终极目标列表,比如执行“make mx6ull_alientek_emmc_defconfig”,那么MAKECMDGOALS就是mx6ull_alientek_emmc_defconfig。很明显过滤后为空,那么条件不成立,所有dot-config仍为 1。
  5. Line 458 判断KBUILD_EXTTMOD是否为空。
  6. Line459 将不符合config和 %confing的部分过滤。这里非空,条件成立,config-targets = 1。
  7. words 统计单词的个数。MAKECMDGOALS的单词个数为1,条件非成立,所以mixed-targets = 1。综上,config-targets = 1、mixed-targets = 0、dot-config = 1。
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值