所以我试图重新考虑我之前编写的内核模块(通过将某些函数移除到不同的.h / .c文件中。这是我当前的Makefile:
EXTRA_CFLAGS +=
KERNEL_SRC:= /lib/modules/$(shell uname -r)/build
SUBDIR= $(PWD)
GCC:=gcc
RM:=rm
.PHONY : clean
all: clean modules
obj-m:= kernel_module.o
modules:
$(MAKE) -C $(KERNEL_SRC) M=$(SUBDIR) modules
clean:
$(RM) -f *.ko *.o *.mod.c Module.symvers
当我尝试制作时,我得到:错误:'ref_sleep'未声明(首次使用此功能)。 如何修改Makefile以确保我的库被编译,并且它正确地链接到我的内核模块?值得一提的是库需要在内核模块中定义的变量,反之亦然。
提前致谢。
答案 0 :(得分:2)
如果我正确理解了这个问题,你想从几个源文件(例如,source1.c,source2.c,source3.c)构建你的内核模块(比如,my_module.ko)。如果是这样,您可以在Makefile中执行以下操作:
obj-m := my_module.o
my_module-y := source1.o source2.o source3.o