首先,可能值得一提的是,EXTRA_CFLAGS已经被弃用了,之前被替换为ccflags-y.您可以在Documentation / kbuild / makefiles.txt,第3.7节中了解ccflags-y的意图.
基本上,此变量允许您将设置附加到C编译标志的集合中,仅在分配该文件的文件的范围内.你不应该改变全局标志,因为这可能会超出你自己的makefile的全局影响,这被认为是坏的做法.您提到的检查确实确实,全局标志没有被包含makefile文件所改变.
有趣的是查看ccflags-y,以前称为EXTRA_CFLAGS,最终在构建过程中使用.跟踪一些相关点(但不是全部,因为这是作为练习留给读者;-))显示如下:
仍然可以使用EXTRA_CFLAGS,根据脚本/ Makefile.lib
1 # Backward compatibility
2 asflags-y += $(EXTRA_AFLAGS)
3 ccflags-y += $(EXTRA_CFLAGS)
同样的文件显示了ccflags -y在C编译标志中的最终结果(并且还显示您有其他变量可用,名为CFLAGS_< filename> .o):
104 orig_c_flags = $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(KBUILD_SUBDIR_CCFLAGS) \
105 $(ccflags-y) $(CFLAGS_$(basetarget).o)
106 _c_flags = $(filter-out $(CFLAGS_REMOVE_$(basetarget).o), $(orig_c_flags))
...
133 __c_flags = $(_c_flags)
...
147 c_flags = -Wp,-MD,$(depfile) $