makefileなしでカーネルモジュールをコンパイルする方法は?

makefileなしでカーネルモジュールをコンパイルする方法は?

makefileなしでカーネルモジュールをコンパイルすることは可能ですか?それでは、どのようにコンパイルしますか?

答え1

いいえ、モジュールのコンパイルに使用する必要があるカーネルMakefileが別の定義を呼び出す必要があるため、これは不可能ですobj-m

ツリー外部モジュールの一般的なMakefileは次のとおりです。

ifneq ($(KERNELRELEASE),)
obj-m := mymodule.o
else
KDIR := /lib/modules/`uname -r`/build

all:
        $(MAKE) -C $(KDIR) M=$$PWD
endif

最初に呼び出されると、定義はKERNELRELEASEなく、カーネルMakefileがパラメータとともに呼び出されますM=$$PWD。最後に、カーネルMakefileが使用され、M再びMakefileモジュールを見つけて呼び出します。今回は、KERNELRELEASE定義と obj-m が入力されます。これでモジュールがコンパイルされます。

関連情報