###Date: 2018.3.24html
===========================================================linux
一、介紹
EXTRA_CFLAGS, EXTRA_AFLAGS, EXTRA_LDFLAGS, EXTRA_ARFLAGS
全部的EXTRA_變量只能使用在定義該變量後的makefile文件中。EXTRA_變量被makefile文件全部的執行命令語句所使用。
$(EXTRA_CFLAGS)是使用$(CC)/gcc編譯C文件的編譯參數選項。
例如: # drivers/sound/emu10k1/Makefile
EXTRA_CFLAGS += -I$(obj)
ifdef
DEBUG EXTRA_CFLAGS += -DEMU10K1_DEBUG
endif
定義這個變量是必須的,由於頂層makefile定義了$(CFLAGS)變量並使用該變量編譯整個代碼樹。
$(EXTRA_AFLAGS)是每一個目錄編譯彙編語言源文件的選項。
例如: #arch/x86_64/kernel/Makefile
EXTRA_AFLAGS := -traditional
$(EXTRA_LDFLAGS)和$(EXTRA_ARFLAGS)用於每一個目錄de$(LD)和$(AR)選項。
工具
二、理解以及使用方法
CFLAGS += $(EXTRA_CFLAGS)spa
理解:在外部傳入CFLAGS會將makefile中的變量CFLAGS中的值覆蓋掉,而採用EXTRA_FLAGS變量的目的應該就是在外部傳入CFLAGS變量時不會將makefile中該變量的值被覆蓋掉,而是將相應的值追加上去。.net
使用方法: make PLATFORM=arm CROSS=aarch64-hisiv610-linux-gnu- EXTRA_FLAGS+=-DARMhtm
使用狀況:在arm平臺中存在不少交叉編譯工具鏈,能夠經過外部輸入交叉編譯工具(CROSS?=arm-hisiv400-linux-)和CFLAGS或者其餘參數選項的值,從而實現makefile編譯腳本的靈活編譯。blog
三、參考
https://blog.csdn.net/hustbin/article/details/16951689it
http://blog.sina.com.cn/s/blog_87c063060101i2ej.html
io