Linux kernel 将自定义库链接到Makefile中的Linux内核模块

Linux kernel 将自定义库链接到Makefile中的Linux内核模块,linux-kernel,makefile,kernel,kernel-module,Linux Kernel,Makefile,Kernel,Kernel Module,因此,我试图重新考虑我以前编写的内核模块(通过将某些函数删除到不同的.h/.c文件中)。以下是我当前的Makefile: obj-m := my_module.o my_module-y := source1.o source2.o source3.o 当我尝试创建它时,我得到:error:'ref_sleep'未声明(此函数首次使用)。 如何修改Makefile以确保我的库被编译,并正确链接到我的内核模块?库需要内核模块中定义的变量,反之亦然,这是毫无价值的 提前感谢。如果我正确理解了这

因此,我试图重新考虑我以前编写的内核模块(通过将某些函数删除到不同的.h/.c文件中)。以下是我当前的Makefile:

obj-m := my_module.o
my_module-y := source1.o source2.o source3.o


当我尝试创建它时,我得到:error:'ref_sleep'未声明(此函数首次使用)。 如何修改Makefile以确保我的库被编译,并正确链接到我的内核模块?库需要内核模块中定义的变量,反之亦然,这是毫无价值的


提前感谢。

如果我正确理解了这个问题,您希望从多个源文件(例如source1.c、source2.c、source3.c)构建内核模块(比如my_module.ko)。如果是这样,您可以在Makefile中执行以下操作:

obj-m := my_module.o
my_module-y := source1.o source2.o source3.o

Offtopic:您可以在“clean”目标中使用以下命令而不是$(RM)来删除生成期间生成的所有文件:“$(MAKE)-C$(KERNEL\u SRC)M=$(SUBDIR)clean”。如果“clean”与现在一样,某些文件可能仍然保留。