我可以运行什么 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 -m
64 位内核,也不能保证 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-architecture
core-2.0-ia32
core-2.0-amd64
sizeof(void*)
您可以通过编译一个打印或 的5 行 C 程序来找出开发的首选字长(假设有 C 编译器)sizeof(size_t)
。
答案2
您可以使用uname -a
并查找x86_64
以查看您是否正在运行 64 位。其他任何情况(据我所知)以及您正在运行 32 位或您在非 PC 硬件上,例如alpha
、sparc
或ppc64
。
答案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 位内核