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 が入力されます。これでモジュールがコンパイルされます。