是否可以在没有 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
define和obj-m将被填充。然后将编译该模块。