X210V3S开发板uboot主Makefile分析

本文详细分析了U-Boot的主Makefile,涵盖uboot版本确定、HOSTARCH和HOSTOS、静默编译、编译方法以及配置过程。重点讨论了编译目标、链接脚本及其对编译的影响,揭示了U-Boot如何通过配置和编译实现可移植性。
摘要由CSDN通过智能技术生成

注:以下知识来源于《朱老师物联网大讲堂》

1 uboot version确定

VERSION = 1
PATCHLEVEL = 3
SUBLEVEL = 4
EXTRAVERSION =
U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
VERSION_FILE = $(obj)include/version_autogenerated.h

(1)uboot的版本号分为3个级别:

VERSION:主版本号

PATCHLEVEL:次版本号

SUBLEVEL:子版本号

EXTRAVERSION:另外附加的版本信息(可自定义)

这4个用“ . ”分隔开共同构成了最终的版本号。

(2)Makefile中版本号最终生成了一个变量U_BOOT_VERSION,这个变量记录了Makefile中配置的版本号。

(3)uboot目录include/version_autogenerated.h文件是编译过程中自动生成的一个文件,所以在源目录中没有,只有编译过后才能找到。它里面的内容是一个宏定义,其右值的内容就是上述介绍的uboot的版本号。如果需要进一步分析,可以自行修改主Makefile中几个version有关的变量,然后重新编译uboot,将其烧录进开发板,看启动时uboot打印出来的版本消息。

2 HOSTARCH和HOSTOS

HOSTARCH := $(shell uname -m | \
	sed -e s/i.86/i386/ \
	    -e s/sun4u/sparc64/ \
	    -e s/arm.*/arm/ \
	    -e s/sa110/arm/ \
	    -e s/powerpc/ppc/ \
	    -e s/ppc64/ppc/ \
	    -e s/macppc/ppc/)

HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
	    sed -e 's/\(cygwin\).*/cygwin/')

export	HOSTARCH HOSTOS

(1)在shell中执行 uname-m 会得到一个字符串,它其实是当前所使用电脑的CPU的版本号。

(2)在关于这部分的代码中,会看到字符“ | ”,它在shell中被解释为管道,其作用是把管道前面的一个运算式的输出作为后面的一个输入再去做处理,最终的输出才是整个式子的输出。

(3) HOSTARCH这个词,HOST是主机,即当前负责编译的电脑;ARCH是architecture的缩写,表示CPU所采用的体系结构。连在一起,就表示为主机CPU的架构。

(4)HOSTARCH和HOSTOS为uboot的两个环境变量。

3 静默编译

# Allow for silent builds
ifeq (,$(findstring s,$(MAKEFLAGS)))
XECHO = echo
else
XECHO = :
endif

(1)平时默认编译时命令行会打印出很多编译信息,有时候如果不想看到这些编译信息,可以设置在后台编译,即静默编译。

(2)使用方法就是 make -s,-s会作为MAKEFLAGS传给Makefile,通过以上代码XECHO变量就会被置为空(默认为echo),于是实现了静默编译。

4 两种编译方法(原地编译与重定向编译)

(1)Makefile提供2种编译方法,默认情况下是当前文件夹中的.c文件夹,编译出来的.o文件会放在同一文件夹下,这种方式就叫原地编译。

(2)原地编译的好处就是处理起来简单。但它存在一些坏处,如:污染源文件目录;一套源代码只能按照一种配置和编译方法进行处理,无法同时维护2个或2个以上的配置编译方式。

(3)为了解决以上问题,uboot支持单独输出文件夹方式的编译(重定向编译),Linux kernel也支持,并且uboot就是从其借鉴而来。基本思路就是在编译时另外指定一个输出目录,将来所有编译生

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值