25

例: 一般的なデバイス モジュールの 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 をファイルに設定できないか検討します。デフォルトのセクションを

$(MAKE) -O2 -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules

しかし、うまくいきませんでした。

何か助けはありますか?どうもありがとう。

4

2 に答える 2

31

-O2makeあなたが試したもので(または$(MAKE)、あなたがそれを使用しているように)オプションになります。明らかに、コンパイラ (おそらくgcc) ではなく、このフラグが必要makeです。

Kbuild は、CFLAGS_modulename.oこのユニットをコンパイルするときに特定の C フラグを追加するために名前が付けられた make 変数を認識します。あなたの場合、モジュールオブジェクトは になるjc.oため、次を指定できます。

CFLAGS_jc.o := -O2

そしてそれはうまくいくはずです。行に追加V=1して詳細な出力を取得すると、いつコンパイルされている$(MAKE)かがわかります。-O2jc.c

モジュールのコンパイルの詳細については、公式ドキュメントを参照してください。

于 2013-08-28T03:51:54.967 に答える