gpt4 book ai didi

c - 了解 LINUX_VERSION_CODE

转载 作者:太空狗 更新时间:2023-10-29 12:15:10 29 4
gpt4 key购买 nike

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

uname -a print 3.10.0-123.13.2.el7.x86_64,我正在用这个内核头文件/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 中被修改,我的头文件中已经有这个修改。

我能做什么?

最佳答案

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)断言或取消断言

#ifdef CENTOS_PATCH /* CentOS 3.10 */
....
#else /* Standard 3.10 */
....
#endif

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

关于c - 了解 LINUX_VERSION_CODE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27761061/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com