我正在尝试编写一些内核模块代码。
我正在使用现有内核模块的功能。
听者包含在我的.c文件中,但我不知道如何正确地将我的代码与内核模块链接起来
在普通的用户空间makefile中,我知道但不知道如何处理内核模块
有什么建议吗?
这是我的Makefile
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
INC := -I/usr/src/kernels/$(shell uname -r)/include
obj-m := scif.o
all:
$(MAKE) V=1 -C $(KERNELDIR) M=$(PWD) modules
clean:
make -C $(KERNELDIR) M=$(PWD) clean
最佳答案
您不能在模块之间“链接”代码。除了包含头文件外,模块只能调用在主内核或其他模块中导出的函数(使用EXPORT_SYMBOL或EXPORT_SYMBOL_GPL..等)。另外,请确保modeules.dep
中的模块依赖关系正确,否则在加载模块时模块将发出投诉。
关于linux - 针对模块的内核Makefile链接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28454610/