首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写跨版本/平台Linux内核模块?

如何编写跨版本/平台Linux内核模块?
EN

Stack Overflow用户
提问于 2013-06-16 22:55:02
回答 2查看 1.7K关注 0票数 5

我刚开始编写Linux内核模块的程序,许多入门指南都没有介绍如何构建运行在Linux的许多版本和CPU平台上的内核模块。我所看到的大多数指南只是简单地说明了这样的情况:"Linux不能确保版本之间的任何ABI/API兼容性。“但是,其他OSes确实为主要版本提供了这些保证,指南主要针对2.7 (现在有点老了)。

我想知道现在是否存在任何形式的ABI/API兼容性,或者是否有任何标准的方法来处理版本控制,除了用大量的预处理器指令将我的代码中依赖内核的比特隔离到文件中之外。(此外,在第二种情况下,我是否应该使用任何标准的预处理符号?)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-17 22:36:36

Linux,阴阳。唐格斯的答案很好,它回答了你的问题。然而,有linux公司的项目。见backports wiki。基本上,有些库为较新的Linux提供了shim功能,您可以使用它来链接代码。在compat.h中检查尤金注释的尤金宏,并包含适当的compat-2.6.38.h等,其中每个版本都有宏和/或库函数来提供转发API。

这允许Linux组为边缘内核编写代码,同时仍然可以在较早的内核版本上进行编译。

我想这回答了这个问题,

是否有任何标准的方法来处理版本控制?

compat图书馆不是灵丹妙药,但至少它在那里,并且正在开发中。

开源-有许多变异。他们都有不同的计划。

票数 4
EN

Stack Overflow用户

发布于 2013-06-17 04:37:14

内核没有一个稳定的ABI,而且很可能永远不会是因为这会让Linux很烂。没有一个的原因几乎都记录在这个链接中。

处理这一问题的最佳方法是将驱动程序合并到上游,由其他内核开发人员维护。

至于跨平台的问题,只要您只使用API中提供的标准、独立于平台的函数,Linux内核就几乎是免费的。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17138491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档