HOSTARCH := $(shell uname -m | \ //注意这里的 | 是管道,即将shell uname -m执行得到的结果通过管道传给下面的sed命令
sed -e s/i.86/i386/ \ //将上面得到的结果中的i.86替换为i386,如果结果中没有i.86子串就不做替换
-e s/sun4u/sparc64/ \
-e s/arm.*/arm/ \
-e s/sa110/arm/ \
-e s/powerpc/ppc/ \
-e s/ppc64/ppc/ \
-e s/macppc/ppc/)
$(shell uname -m)表示执行uname –m的shell命令,他执行的结果是取出机器硬件名(这台机器是64位的,所以其得到的结果就是x86-84)。sed –e s/abc/def 的意思是寻找结果里面是否有’abc’字样,如果有,就用‘def’字样将其代替。
所以整条语句的意思就是,取出uname –m的结果,并在其中寻找是否有i.86字样,如果有就用i386代替,是否有arm.*(*是通配符),如果有,就用arm代替……,本台机的结果是x86-64所以还保持原样,没有用其他字符替换,所以HOSTARCH=x86-64
HOSTOS := $(shell uname -s | tr'[:upper:]' '[:lower:]' | \
sed -e 's/cygwin.*/(cygwin/')
uname –s 表示取出本机操作系统内核名称,(这台机器是Linux),tr ‘[:upper:]’’[:lower:]’表示将结果里面的大写字符全部换成小写字符,sed –e‘s/Cygwin.*/Cygwin/’表示寻找结果里面是否有cygwin.*字符,如果有就用cygwin替换
所以整句话的结果就是HOSTOS = linux(注意第一个字母L被换成了小写l)