例:共通デバイスモジュールのMakefile
obj-m:=jc.o
default:
$(MAKE) -C /lib/modules/$(Shell uname -r)/build M=$(Shell pwd) modules
clean:
$(MAKE) -C /lib/modules/$(Shell uname -r)/build M=$(Shell pwd) modules clean
CFLAGSをファイルに設定できるかどうかを検討します。 defaultセクションを
$(MAKE) -O2 -C /lib/modules/$(Shell uname -r)/build M=$(Shell pwd) modules
しかし、それはうまくいきませんでした。
何か助けは?どうもありがとう。
_-O2
_は、あなたが試したもののmake
(または$(MAKE)
、使用しているため)のオプションになります。明らかに、コンパイラ(おそらくgcc
)にはmake
ではなくこのフラグが必要です。
Kbuildは_CFLAGS_modulename.o
_という名前のmake変数を理解して、このユニットをコンパイルするときに特定のCフラグを追加します。あなたの場合、モジュールオブジェクトは_jc.o
_になるので、次のように指定できます。
_CFLAGS_jc.o := -O2
_
そしてそれはうまくいくはずです。 _V=1
_を$(MAKE)
行に追加して詳細な出力を取得すると、_-O2
_がコンパイルされているときに_jc.c
_が表示されます。
モジュールのコンパイルの詳細については、 公式ドキュメント を参照してください。
あなたも使うことができます
ccflags-y := -O2
これは、Makefileを使用してモジュール用にコンパイルされたすべてのソースファイルに適用されます。これは、eeppによって セクション4.2 で提供されているリンクに間接的に記載されています。