从入门到精通Uboot(5.Uboot顶层Makefile)

1.版本信息的查看

在这里插入图片描述

从这里可以判断出uboot的版本号,这个对应的版本是2016.03

2.是否详细打印

在这里插入图片描述
ifeq用来比较两个值是否相等
这里涉及到一个函数origin,origin不操作变量的值,语法为
$(origin)
origin的返回值是变量的来源,那么这里就是变量V的来源,变量V的来源是command line
如过变量V的来源是command line进入ifeq里面,继续执行

我们在编译时候如果要详细打印,会设置V=1来实现完整的命令输出
KBUILD_VERBOSE会获取到V所赋值的
因此有
KBUILD_VERBOSE=1

接下来往下分析,如果没有定义KBUILD_VERBOSE话,会默认KBUILD_VERBOSE=0
接下来如果KBUILD_VERBOSE为的话,quiet和Q都为空,进行详细打印
如果KBUILD_VERBOSE不是1,则
quiet = quiet_
Q = @
Makefile 中会用到变量 quiet 和 Q 来控制编译的时候是否在终端输出完整的命令
在这里插入图片描述
.如果Q为@,我们知道在命令前面加上“@”就不会在终端输出命令了
我们截图注释部分
在这里插入图片描述
make -s 这个命令实现编译的时候不打印信息 ,什么显示都没得,原理是quiet=silent_。

3.获取主机架构和系统

在这里插入图片描述
HOSTARCH是架构,在linux终端我们输入 uname -m,显示架构名称
然后是一个管道运算符,把shell uname -m的屏幕输出结果,作为sed的输入,把其中的i.86替换成x86

4.设置目标架构、交叉编译器和配置文件

编 译 uboot 的 时 候 需 要 设 置 目 标 板 架 构 和 交 叉 编 译 器 ,
make ARCH=arm
CROSS_COMPILE=arm-linux-gnueabihf-
就是用于设置 ARCH 和 CROSS_COMPILE,在顶层Makefile 中代码如下:
在这里插入图片描述
这里HOSTARCH是开发设备的架构,245行比较了下开发设备的架构和目标开发板的架构
如果两个架构相等了CROSS_COMPILE为空,则不需要交叉编译工具链
如果两个架构不相等,则CROSS_COMPILE为我们所设置的工具链arm-linux-gnueabihf-
每次编译 uboot 的时候都要在 make 命令后面设置ARCH 和 CROSS_COMPILE,使用起来很麻烦,可以直接修改顶层 Makefile,在里面加入 ARCH和 CROSS_COMPILE 的定义
在这里插入图片描述
5.make xxx_defconfig的讲解
在编译Uboot之前,使用make xxx_defconfig进行配置
我们先看一下Makefile的源码,看看其中的目标
在这里插入图片描述
这里使用了%用来代替省略内容,%config依赖scripts_basic outputmakefile FORCE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值