我正在从事linux内核开发,并试图制作自己的模块用于测试目的。但是,对于最新的内核源代码,linux-headers并不存在。它只存在于4.9.0-7。
我在谷歌上找到了一种方法,我们可以根据我们想要的内核源代码树对模块进行make (例如:4.18)为我的模块生成.ko的make -C /home/prasad/linux-4.18/ M=$(PWD)。然而,当我加载我的内核并insmod它时,它会说
insmod: ERROR: could not insert module test.ko: Unknown symbol in module
那么,如何从我的主机生成可以插入到4.18内
我想将一个.c文件编译成一个.o文件,以便在以后的单独阶段中,我可以将它与其他文件链接起来,生成一个可加载的模块(.ko文件)。
我尝试遵循Kbuild文档(2.4 ),但没有成功:
obj-m: myfile.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$PWD/ myfile.o
输出为:
$ make
cc -c -o myfile.o myfile.c
myfile.c:42:26: fatal error: linux/printk.h: No such file or director