###Date: 2018.3.24
===========================================================
1、介紹
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)選項。
2、理解以及使用方法
CFLAGS += $(EXTRA_CFLAGS)
理解:在外部傳入CFLAGS會將makefile中的變量CFLAGS中的值覆蓋掉,而采用EXTRA_FLAGS變量的目的應該就是在外部傳入CFLAGS變量時不會將makefile中該變量的值被覆蓋掉,而是將相應的值追加上去。
使用方法: make PLATFORM=arm CROSS=aarch64-hisiv610-linux-gnu- EXTRA_FLAGS+=-DARM
使用情況:在arm平台中存在很多交叉編譯工具鏈,可以通過外部輸入交叉編譯工具(CROSS?=arm-hisiv400-linux-)和CFLAGS或者其他參數選項的值,從而實現makefile編譯腳本的靈活編譯。
3、參考
https://blog.csdn.net/hustbin/article/details/16951689
http://blog.sina.com.cn/s/blog_87c063060101i2ej.html