为什么我们需要已编译的内核源代码树来编译模块?

为什么我们需要已编译的内核源代码树来编译模块?

Linux 内核模块似乎不可移植:它们是针对特定版本的内核编译的(这就是为什么即使是二进制驱动程序也有一些源文件需要编译)。而且您不仅需要完全相同的内核源代码,甚至需要编译它并使用自己制作的版本……(如果我错了,请纠正我)。

所以我的问题是:这背后的原因是什么?(...每次都会重新生成一些二进制接口?)有没有办法为预构建的内核编译模块?(源代码可能可用,但编译出来的树不可用)。

答案1

您认为您想要一个稳定的内核接口,但实际上您并不需要,而且您甚至不知道这一点。您想要的是运行稳定的驱动程序,而只有当您的驱动程序位于主内核树中时,您才能获得它。如果您的驱动程序位于主内核树中,您还会获得许多其他好处,所有这些都使 Linux 成为如此强大、稳定和成熟的操作系统,这也是您首先使用它的原因。

Linux 内核驱动程序接口(解答您的所有疑问,甚至更多)

相关内容