まず、EXTRA_CFLAGS
はもうすぐ廃止され、ccflags-y
に置き換えられました。 ccflags-y
の意図については、Documentation/kbuild/makefiles.txt
のセクション3.7を参照してください。
基本的に、この変数を使用すると、ファイルのスコープ内でCコンパイルフラグのセットに設定を追加することができます。 は、自分のmakefileを超えてグローバルな影響を及ぼす可能性があるため、グローバルフラグを変更する必要はありません。これは悪い習慣とみなされます。あなたが言及しているチェックでは、実際にグローバルフラグがインクルードされたmakefileによって変更されていないことを確認します。
ccflags-y
(以前はEXTRA_CFLAGS
として知られていました)がビルドプロセスでどのように使用されているかを調べることは面白いです。 (それは読者;-)の課題として残されているので、全てではない)、いくつかの関連した点をトレースすると、次を示しています。
EXTRA_CFLAGS
を依然として使用することができる
、scripts/Makefile.lib
1 # Backward compatibility
2 asflags-y += $(EXTRA_AFLAGS)
3 ccflags-y += $(EXTRA_CFLAGS)
同じファイルに従ってscripts/Makefile.build
に続いて
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) $(NOSTDINC_FLAGS) $(LINUXINCLUDE) \
148 $(__c_flags) $(modkern_cflags) \
149 -D"KBUILD_STR(s)=\#s" $(basename_flags) $(modname_flags)
、COMP:(CFLAGS_<filename>.o
と呼ばれ、また、あなたはあなたの処分で別の変数を持っていることを示している)ccflags-y
はCのコンパイルフラグで終わる方法を示していますilationルールが定義されています
234 cmd_cc_o_c = $(CC) $(c_flags) -c -o [email protected] $<
注これらはあなたがあなた自身のメイクファイルでそれを定義するときccflags-y
の独自の値をCフラグに挿入されることを意味し=
なく:=
を使用して、すべての再帰的に展開変数であることを。
最後に約KBUILD_NOPEDANTIC
です。タイトルには記載されていますが、実際の質問には記載されていません。CFLAGS
の変更された値のためのこのテストはKBUILD_NOPEDANTIC
に任意の値を与えることによって無効にすることができます - この答えで参照されるファイルはすべて、今日取得されたscripts/Makefile.build
を参照してください。
今、この分野の専門家ではなく、この全体の話を書き留めた後にmakefilesを見ていると、理解できないこともあります。 CFLAGS
はビルドシステムでは使用されていませんが(暗黙的にも明示的でもない)、KBUILD_CFLAGS
です。だから、CFLAGS
の変更のチェックが、実際にはKBUILD_CFLAGS
の変更のチェックであるべきかどうか疑問です。
私がCFLAGSがフラグであることを理解していれば、カーネル全体がコンパイルされているため、変更しないでください。これは、カーネルKBuildシステムがCFLAGS + EXTRA_CFLAGSで外部モジュールをコンパイルすることを意味します。正しい? – dimba
そうだと思います。 – ugoren