Linux 命令返回位数(32 或 64)?

Linux 命令返回位数(32 或 64)?

我可以运行什么 Linux 命令来以编程方式返回 32 或 64 来指示处理器是 32 位还是 64 位处理器?

答案1

  • 您可以查看中央处理器是 64 位、32 位还是两者都支持,方法是检查flags中的行/proc/cpuinfo。您必须知道体系结构系列上可能的标志。例如,在 i386/amd64 平台上,该lm标志标识支持 amd64 的 CPU(没有该标志的 CPU 仅适用于 i386)。

    grep -q '^flags\s*:.*\blm\b' /proc/cpuinfo    # Assuming a PC
    
  • 您可以使用 查询体系结构来查看内核是 32 位还是 64 位uname -m。例如,i[3456]86是 32 位,x86_64是 64 位。请注意,在多个体系结构中,64 位内核可以运行 32 位用户空间程序,因此即使 显示uname -m64 位内核,也不能保证 64 位库可用。

    [ "$(uname -m)" = "x86_64" ]    # Assuming a PC
    

    还要注意,uname -m可能会返回“虚拟化”值。例如,在 Linux 下,如果您setarch i386 bash在 amd64 系统上运行,并uname -m从该 bash 运行,您将看到uname -m报告i386。这实际上可以让您假装自己在“32 位系统”上,即使内核是 64 位的,例如在不设置交叉编译的情况下编译 32 位程序。

  • 你可以通过查询来查看用户空间中可用的内容最低有效位支持lsb_release命令。更准确地说,lsb_release -s打印:受支持的 LSB 功能的分隔列表。每个功能的形式为。例如,ix86 C 库的可用性由 表示,而amd64 的类似物是 。但并非每个发行版都声明了所有可用的 LSB 模块,因此可用的模块可能比通过这种方式检测到的模块更多。module-version-architecturecore-2.0-ia32core-2.0-amd64

  • sizeof(void*)您可以通过编译一个打印或 的5 行 C 程序来找出开发的首选字长(假设有 C 编译器)sizeof(size_t)

答案2

您可以使用uname -a并查找x86_64以查看您是否正在运行 64 位。其他任何情况(据我所知)以及您正在运行 32 位或您在非 PC 硬件上,例如alphasparcppc64

答案3

uname -m | sed 's/x86_//;s/i[3-6]86/32/'

答案4

类型:

uname -a

如果出现x86_64 GNU/Linux类似信息,则表明您正在运行 64 位内核。如果出现类似信息,则表明i386/i486/i586/i686您很可能正在运行 32 位内核

相关内容