Linux内核补丁版本宏定义

时间:2017-05-23 11:44:43

标签: c gcc linux-kernel macros preprocessor

我想为centos 7内核构建我的内核模块。但我有一些功能原型的问题。它在kernel-3.10.0- 327.36.3.el7 和kernel-3.10.0- 514.el7 中有所不同。我知道如何使用Linux Kernel Version Macro Definition。但我需要检查内核补丁版和linux目录名。

有些机构知道预处理器宏用于检查内核的补丁版本吗?

1 个答案:

答案 0 :(得分:0)

我刚刚找到了一些信息。我们可以在内核头文件中使用Makefile中的一些预定义变量。例如,在centos 7中,我们有kernel-3.10.0-514.16.1.el7。文件/usr/src/kernels/3.10.0-514.16.1.el7.x86_64/Makefile中有变量:

VERSION = 3
PATCHLEVEL = 10
SUBLEVEL = 0
EXTRAVERSION = -514.16.1.el7.x86_64
NAME = Unicycling Gorilla
RHEL_MAJOR = 7
RHEL_MINOR = 3
RHEL_RELEASE = 514.16.1
...

在我们的内核模块Makefile中,我们可以通过-DPATCH_VERSION = $ {RHEL_RELEASE} gcc parametr(或者在centos 7中的示例)将它放在我们的源代码中。但需要检查发行版,因为在debian中没有RHEL_RELEASE变量。

我认为有更好的方法。