一尘不染

是否有宏定义可以检查Linux内核版本?

linux

我想知道是否有一个gcc宏可以告诉我Linux内核版本,以便我可以适当地设置变量类型。如果没有,我将如何定义自己的宏呢?


阅读 648

收藏
2020-06-02

共1个答案

一尘不染

LINUX / version.h中
的文件有一个名为宏KERNEL_VERSION可以让你检查要对当前的Linux版本头(版本LINUX_VERSION_CODE)安装。例如,检查当前的Linux标头是否适用于内核
v2.6.16 或更早版本:

#include <linux/version.h>

#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,16)
...
#else
...
#endif

在运行时获取版本信息的更好方法是使用include / linux / utsname.h中utsname函数。

char *my_kernel_version = utsname()->release;

从本质/proc/version上讲,这就是获取当前内核版本的方法。

2020-06-02