獲取系統(tǒng)架構(gòu)
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 的值代表當前系統(tǒng)CPU的架構(gòu)
$(shell xxxx)相當于在linux中輸入xxxx麸锉。uname -m得到當前計算機CPU版本號瞎颗。
shell中的|叫做管道,管道的作用就是把管道前面一個運算式的輸出作為后面一個的輸入再去做處理即|表示把|左邊的結(jié)果作為輸入輸入給|右邊饱苟。\是一個換行符。
sed -e s/a/b/ 意思是用b來替換a。
HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
sed -e 's/\(cygwin\).*/cygwin/')
export HOSTARCH HOSTOS
uname -s為顯示操作系統(tǒng)名稱岖寞。tr '[:upper:]' '[:lower:]' 表示把大寫換成小寫,tr是linux中的一個指令柜蜈。
HOSTARCH表示主機CPU架構(gòu)仗谆,HOSTOS表示主機操作系統(tǒng)。
配置交叉編譯器
ifeq ($(HOSTARCH),$(ARCH))
CROSS_COMPILE ?=
endif
配置交叉編譯器的方法有兩種:
1淑履、在命令行中?如:make?ARCH=arm
2隶垮、設(shè)置環(huán)境變量,在環(huán)境變量中默認的ARCH的值是執(zhí)行make的cpu構(gòu)架秘噪;