我正在从事Linux内核开发,并试图制作自己的模块以进行测试。但是,对于最新的内核源代码,linux头文件不存在。它仅在4.9.0-7中存在。
我用Google搜索并找到了一种方法,在该方法中我们针对想要的内核源代码树(例如4.18)make
使用模块
make -C /home/prasad/linux-4.18/ M=$(PWD)
确实会为我的模块生成.ko。但是,当我加载内核并insmod
时,它显示为
insmod: ERROR: could not insert module test.ko: Unknown symbol in module
那么我该如何从我的主机生成一个可插入4.18内核的.ko文件呢?
PS:我的疑问不是duplicate,因为我无法在自己的vm中“安装” 4.18内核,我试图避免这样做。我的问题是针对生成可插入的.ko模块,而不是在4.18中找到将其插入的其他方法。
答案 0 :(得分:0)
您不能在4.9内核中使用为4.18构建的模块。
如果通过apt / yum / etc无法获得要构建的内核版本的标头,则需要从https://www.kernel.org/
手动下载源代码。在模块的makefile中,将指定已下载并提取的内核源代码的路径。
这应该允许您为所需的内核版本构建模块。