第十一章 U-boot 顶层 Makefile 详解 (获取主机架构和系统)

文章详细解释了Makefile如何通过shell命令获取并设置主机的架构(HOSTARCH)(如x86_64)和操作系统(HOSTOS)(如Linux),使用sed进行字符串替换以适应不同架构和OS的情况。
摘要由CSDN通过智能技术生成

11.2.8 获取主机架构和系统

        接下来顶层 Makefile 会获取主机架构和系统,也就是我们电脑的架构和系统,代码如下:        

244 HOSTARCH := $(shell uname -m | \
245    sed -e s/i.86/x86/ \
246         -e s/sun4u/sparc64/ \
247         -e s/arm.*/arm/ \
248         -e s/sa110/arm/ \
249         -e s/ppc64/powerpc/ \
250         -e s/ppc/powerpc/ \
251         -e s/macppc/powerpc/\
252         -e s/sh.*/sh/)
253
254 HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
255    sed -e 's/\(cygwin\).*/cygwin/')
256
257 export HOSTARCH HOSTOS

        第 244 行定义了一个变量 HOSTARCH,用于保存主机架构,这里调用 shell 命令“uname -m”获取架构名称。如图:

        从图 11.2.8.1 可以看出当前电脑主机架构为“x86_64”,shell 中的“|”表示管道,意思是将
左边的输出作为右边的输入,sed -e 是替换命令,“sed -e s/i.86/x86/”表示将管道输入的字符串中的“i.86”替换为“x86”,其他的“sed -e s”命令同理。对于我的电脑而言, HOSTARCH=x86_64.

        第 254 行定义了变量 HOSTOS,此变量用于保存主机 OS 的值。使用 shell 命令“uname-s”来获取主机 OS。如下图:

        从图 11.2.8.2 可以看出此时的主机 OS 为“Linux”,使用管道将“Linux”作为后面“tr'[:upper:]''[:lower:]'”的输入,“tr '[:upper:]' '[:lower:]'”表示将所有的大写字母替换为小写字母,因此得到“linux。
        最后同样使用管道,将“linux”作为“sed -e 's/\(cygwin\).*/cygwin/'”的输入,用于将cygwin.*替换为 cygwin。因此,HOSTOS=linux。
        第 257 行导出HOSTARCH=x86_64,HOSTOS=linux。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值