首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解LINUX_VERSION_CODE

问了解LINUX_VERSION_CODE
EN

Stack Overflow用户
提问于 2015-01-04 08:21:02
回答 2查看 2.3K关注 0票数 2

我正在编写一个内核模块,我再次测试我的LKM时发现了一个问题。

uname kernels print 3.10.0-123.13.2.el7.x86_64,我正在使用这个-a -headers /usr/src/kernels/3.10.0-123.13.2.el7.x86_64/编译我的KM,并使用LINUX_VERSION_CODE来定义我的代码节。

我的问题是,编译失败是因为内核头包含了在更多新内核版本中添加的代码,但LINUX_VERSION_CODE返回3.10。

例如,nf_hookfn在内核3.13中被修改了,而我的头文件中已经有了这个修改。

我能做什么?

EN

回答 2

Stack Overflow用户

发布于 2015-01-04 17:17:11

LINUX_VERSION_CODE返回Linux版本3.10, CentOS Linux版本3.10.0-123.13.2.el7。从理论上讲,他们不应该应用API更改的补丁...您刚刚发现了原因:)

如果在CentOS上可以更改稳定的API,他们应该提供类似于CentOS的LINUX_VERSION_CODE的东西。

您可以定义自己的预处理器变量,并在编译时根据要使用的内核版本(标准3.10或CentOS 3.10)断言或取消断言它。

代码语言:javascript
复制
#ifdef CENTOS_PATCH /* CentOS 3.10 */
    ....
#else /* Standard 3.10 */
    ....
#endif

但是,您必须管理两个不同的二进制文件

票数 1
EN

Stack Overflow用户

发布于 2019-06-08 00:22:16

Centos为此提供了一些有用的宏:

代码语言:javascript
复制
#if RHEL_RELEASE_CODE > RHEL_RELEASE_VERSION(7,2)
//
#else
//
#endif

是的,Centos定制内核从最近的Linux内核中拉出了一些变化。

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

https://stackoverflow.com/questions/27761061

复制
相关文章

相似问题

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