如何在没有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,这次使用KERNELRELEASEdefine和obj-m将被填充。然后将编译该模块。

相关内容