OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2210|回复: 0

关于u-boot顶层Makefile的HOSTOS获取的疑惑

[复制链接]

2

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2018-1-30
在线时间
10 小时
发表于 2022-5-7 14:12:09 | 显示全部楼层 |阅读模式
#########################################################################

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

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

export    HOSTARCH HOSTOS

#########################################################################

上面的HOSTARCH的获取过程我能理解,我的虚拟机是Ubuntu18.04的,shell uname -m返回的是x86_64,然后 | 是管道,sed -e 会拿着x86_64来跟后续的那些匹配来替换,因为所有的都不符合,最终得到的就是x86_64
下面HOSTOS我也照着上面的理解过程来理解,前面的shell uname -s返回的是Linux, | 是管道, tr '[:upper:]' '[:lower:]'是把所有的大写转换成小写,但后面那个sed -e 's/\(cygwin\).*/cygwin/'我就懵逼了。
里边的\(和\)是否要理解成和C语言的转义字符一样的处理,其实它想表达的是将(cygwin).*的东西转换成cygwin?
如果是想这么转换的话,为什么不和上面HOSTARCH的获取一样,sed -e s/\(cygwin\).*/cygwin/,而是要多加两个单引号把它框起来呢?
教程里,是这么描述的,看得比较懵逼。感觉说不通。





正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-5-29 18:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表