Linux内核模块似乎不是可移植的:它们是为特定版本的内核编译的(这就是为什么即使二进制驱动程序也有一些源文件需要编译的原因)。 而且你不仅需要完全相同的内核源代码,你甚至需要编译它,并使用自己制作的版本…(如果我在某处错了,请纠正我)。
所以我的问题是:这一切背后的原因是什么? (…一些二进制接口,每次都得到重新生成?)有没有什么办法来编译预构build内核的模块? (来源可能是可用的,但不是从它编译的树)。
你认为你想要一个稳定的内核接口,但你真的不知道,而且你甚至不知道。 你想要的是一个稳定的运行驱动程序,只有当你的驱动程序位于主内核树中时才会得到。 如果您的驱动程序位于主内核树中,您还可以获得许多其他好处,所有这些都使Linux成为一个强大,稳定和成熟的操作系统,这正是您首先使用它的原因。
( 来自 Linux内核驱动程序接口(您的所有问题都回答了一些问题) )