uboot顶层makefile走读

本文详细探讨了U-Boot的顶层Makefile,包括MAKEFLAGS和CURDIR变量、命令输出控制、编译配置、主机检测、GCC命令生成、交叉编译设置以及.config文件的生成过程。通过对.config的解析,确定了目标平台的ARCH、CPU和BOARD等关键信息,并在后续编译过程中起作用。

1

1.1

MAKEFLAGS += -rR --include-dir=$(CURDIR)

MAKEFLAGS和CURDIR为makefile中的默认变量

使用make -.p可以查看makefile预先定义过的东西

1.2

ifeq ("$(origin V)", "command line")
    KBUILD_VERBOSE = $(V)
endif
ifndef KBUILD_VERBOSE
    KBUILD_VERBOSE = 0
endif
ifeq ($(KBUILD_VERBOSE), 1)
    quiet=
    Q=
else
    quiet=quiet_
    Q=@
endif

这段代码实现了在make的时候使用参数V=1或者V=0实现长短命令log输出切换

原理是通过命令行传进来的V参数构造KBUILD_VERBOSE quiet Q三个变量

在写命令的时候加上$(Q)或者$(quiet)前缀,使得命令文本变成短命令打印的版本

V=0:$(Q)make------->@make        @(quiet)sym------->quiet_sym

V=1:$(Q)make------->make            @(quiet)sym------->sym

uboot编译时可加上-s变成静默编译,原理是凑出silent_前缀

export quiet Q KBUILD_VERBOSE

之后通过export把这三个变量传给下层makefile

1.3

ifeq ($(KBUILD_SRC),)
        # building in the source tree
        srctree := .
else
        ifeq ($(KBUILD_SRC)/,$(dir $(CURDIR)))
                # building in a subdirectory of the source tree
                srctree := ..
        else
                srctree := $(KBUILD_SRC)
        endif
endif
objtree		:= .
src		:= $(srctree)
obj		:= $(objtree)

VPATH		:= $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD))

export srctree objtree VPATH

生成源代码路径,和生成文件路径以及VPATH

1.4

HOSTARCH := $(shell uname -m | \
	sed -e s/i.8
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值