【发布时间】:2014-11-09 12:10:26
【问题描述】:
所以我正在尝试重构我之前编写的内核模块(通过将某些函数删除到不同的不同 .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' undeclared(在此函数中首次使用)。 如何修改 Makefile 以确保我的库正在编译,并且正确链接到我的内核模块?库需要在内核模块中定义变量是不值得的,反之亦然。
提前致谢。
【问题讨论】:
-
Offtopic:您可以在“干净”目标中使用以下内容而不是 $(RM) <...> 来删除构建期间生成的所有文件:“$(MAKE) -C $( KERNEL_SRC) M=$(SUBDIR) 清洁”。如果“干净”是现在的样子,一些文件可能仍然存在。
标签: linux-kernel makefile kernel kernel-module