首页 > 解决方案 > 在运行时 linux 确定 cpu 架构?

问题描述

我想在 Linux 环境中在运行时检测 CPU 架构,我看过getauxval(AT_PLATFORM)但遗憾的是它不是可移植的,因为它相对较新。会有替代方案getauxval(AT_PLATFORM)吗?我可以解析/proc/cpuinfo,但认为可能有更简单的方法。我正在尝试获得类似于uname -m.

标签: clinuxoperating-system

解决方案


I'm trying to get output similar to uname -m.

为什么不看看是怎么回事uname?运行apt source coreutils并进入src/uname.c

...
while ((c = getopt_long (argc, argv, "asnrvmpio",
                        uname_long_options, NULL)) != -1)
...

case 'm':
    toprint |= PRINT_MACHINE;

if (uname (&name) == -1)
...
if (toprint & PRINT_MACHINE)
        print_element (name.machine);

(注意uname函数的用法)。


uname是一个由 POSIX 定义并用 glibc 包装的系统调用:

#include <sys/utsname.h>
int uname(struct utsname *buf);

并将机器硬件标识符存储在 中buf->machine,这是由 . 打印的内容uname -m

顺便说一句-lib/uname.c您可以看到 coreutilsuname为 Windows 系统(不支持uname系统调用)实现的自定义函数。此实现使用提供类似功能的GetVersionEx和WinAPI。GetSystemInfo


推荐阅读