我需要有关内核模块的Makefile的帮助。即使是例子也会有很大的帮助。
目前我的模块代码在多个目录下。我们说
<MAIN-DIR> --- l2.c
<SUB-DIR1> --- hello.c
<SUB-DIR2> --- bye.c
对于上面的场景,我如何编写我的makefile。因为构建l2模块我需要l2.o hello.o和bye.o.目前他们在多个目录中。
答案 0 :(得分:5)
如果你正在从内核树构建一个模块,那么一个简单的makefile应该可以工作:
MODULE_NAME = mymodule
SRC := foo.c src/bar.c
# Path to target Linux Kernel
KDIR := $(shell pwd) # <--- Fill in with path to kernel you're compiling against
$(MODULE_NAME)-objs = $(SRC:.c=.o)
obj-m := $(MODULE_NAME).o
PWD := $(shell pwd)
EXTRA_CFLAGS := -I$(PWD)/src -I$(PWD)/include
all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
从SRC :=
行中可以看出,您可以简单地指定所有源文件的路径,包括子目录中的路径。 <{1}}中的顶级内核makefile将负责编译。
有关内核构建系统和树构建之外的更多信息,请参阅KDIR
中的内核源文档。