uboot Makefile解析(五)


获取系统架构

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/)

HOSTARCH 的值代表当前系统CPU的架构
$(shell xxxx)相当于在linux中输入xxxx。uname -m得到当前计算机CPU版本号。
shell中的|叫做管道,管道的作用就是把管道前面一个运算式的输出作为后面一个的输入再去做处理即|表示把|左边的结果作为输入输入给|右边。\是一个换行符。
sed -e s/a/b/ 意思是用b来替换a。

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

export  HOSTARCH HOSTOS

uname -s为显示操作系统名称。tr '[:upper:]' '[:lower:]' 表示把大写换成小写,tr是linux中的一个指令。
HOSTARCH表示主机CPU架构,HOSTOS表示主机操作系统。


配置交叉编译器

ifeq ($(HOSTARCH),$(ARCH))
CROSS_COMPILE ?=
endif

配置交叉编译器的方法有两种:

1、在命令行中 如:make ARCH=arm
2、设置环境变量,在环境变量中默认的ARCH的值是执行make的cpu构架;

你可能感兴趣的:(uboot Makefile解析(五))