我是 Linux 内核模块编程的新手,许多关于该主题的入门指南都包含有关如何构建将在 Linux 的许多版本和 CPU 平台上运行的内核模块的少量信息。我见过的大多数指南都简单地陈述了诸如“Linux 不能确保版本之间的任何 ABI/API 兼容性”之类的内容。但是,其他操作系统确实为主要版本提供了这些保证,并且指南主要针对 2.7(现在有点旧)。
我想知道现在是否有任何 ABI/API 兼容性,或者是否有任何标准方法来处理版本控制,而不是将我的代码的内核相关位隔离到具有大量预处理器指令的文件中。 (另外,在第二种情况下我应该使用任何标准的预处理器符号吗?)
请您参考如下方法:
内核没有稳定的 ABI,很可能永远不会是 because it'd make Linux suck .没有一个的原因几乎都记录在该链接中。
处理这个问题的最好方法是让你的驱动程序在上游合并,由其他内核开发人员维护。
至于跨平台,只要您只使用 API 中提供的标准、独立于平台的函数,Linux 内核几乎是免费的。