当前位置: 首页 > 面试题库 >

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

萧星火
2023-03-14
问题内容

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


问题答案:

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上讲,这就是获取当前内核版本的方法。



 类似资料:
  • 问题内容: 我有一些需要经常打印的结构。现在,我正在围绕该结构使用经典的打印包装器: 此功能很方便,但实际上也很有限。如果不进行新包装,则无法添加或添加一些文本。我知道我可以使用 va_arg 系列添加或添加一些文本,但是我觉得我会重新实现。 我想知道是否有可能向printf编写自定义函数。我希望能够写这样的东西: 这可能吗 ?我怎样才能做到这一点 ? 注意:我在Ubuntu Linux 10.0

  • 在编写高度可移植的代码时,我正在搜索C90标准以寻找需要注意的事情,同时对编译器供应商的善意不太信任,并且假设如果我做错了事情,我的软件有时可能会杀死某人。假设我有点偏执。 目前我正在考虑“翻译限制”(5.2.4.1 ANSI/ISO 9899:1990)。正如标准和中所指出的:“ansi C是否对程序中的外部变量数量进行了限制?”,这些是符合标准实施的最低要求。另一方面,这意味着,任何实现都不需

  • 由于Linux系统的特殊性,G01对于Linux系统的支持主要以内核版本为主,即"uname -a"所显示的版本信息;而不以系统的版本信息为支持标准。 以下表格中为当前G01支持的Linux系统内核版本,安装时请进行参考。 CentOS/RedHat Linux 内核版本 CentOS 7/RedHat Linux 7 CentOS 6/RedHat Linux 6 CentOS 5/RedHat

  • 使用 ubuntu22.04 发现使用 sudo apt update && sudo apt upgrade -y 更新软件包的时候,也会更新 Kernel 机器上有好多个 Kernel 了,ubuntu 给我下载这么多 Kernel 干嘛呢?

  • 问题内容: 我正在开发需要均衡器的android媒体播放器。但是,均衡器仅在Gingerbread及更高版本上可用,但是cyanogenmod 6修改了audioflinger以用作均衡器,因此我想检测OS版本。 问题答案: 您可以读取属性并与之匹配: 在我的设备上是。

  • 我正在使用约克托项目来构建 linux os 映像。我使用SUMO版本,所以我有4.14.73内核版本。 问题是我有预编译的linux驱动,版本是4.14.88。 我认为我必须升级我的linux内核,使其成为相同版本的驱动程序。 知道怎么做吗?