【问题标题】:Linux Kernel Patch Version Macro DefinitionLinux内核补丁版本宏定义
【发布时间】:2017-10-23 08:29:45
【问题描述】:

我想为 centos 7 内核构建我的内核模块。但是我对一些函数原型有疑问。 kernel-3.10.0-327.36.3.el7 和 kernel-3.10.0-514.el7 是不同的。我知道如何使用Linux Kernel Version Macro Definition。但我需要检查内核补丁版本和 linux 目录名称。

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

【问题讨论】:

  • 如需快速回复,您可以在 IRC 中提出此问题。 kernelnewbies.org/IRC
  • 好的。如果我在 kernelnewbies.org/IRC 中解决这个问题,我会告诉你在这里
  • 我相信如果设置了CONFIG_LOCALVERSION_AUTO,您获得的那些额外数字会自动添加。对应于源代码树版本。检查this
  • CONFIG_LOCALVERSION_AUTO - 是另一个额外的后缀。

标签: c gcc linux-kernel macros preprocessor


【解决方案1】:

我刚刚找到了一些信息。我们可以在内核头文件中使用 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 参数(或 centos 7 中的示例)将其放入源代码中。但是需要检查发行版,因为在 debian 中没有 RHEL_RELEASE 变量。

我认为有更好的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 2017-10-04
    • 2021-12-17
    • 1970-01-01
    • 2010-09-30
    • 2014-10-31
    相关资源
    最近更新 更多