如何确定一个给定的Linux是32位还是64位?

当我输入 "uname -a "时,它给出了以下输出。

Linux mars 2.6.9-67.0.15.ELsmp #1 SMP Tue Apr 22 13:50:33 EDT 2008 i686 i686 i386 GNU/Linux

我怎么能从中知道给定的操作系统是32位还是64位?

这在编写 "configure "脚本时很有用,例如:我是为哪个架构构建的?

解决办法

试试uname -m。这是`uname --machine'的缩写,它的输出结果是。

x86_64 ==> 64-bit kernel
i686   ==> 32-bit kernel

否则,不是针对Linux内核,而是针对CPU,你可以输入。

cat /proc/cpuinfo

或。

grep flags /proc/cpuinfo

在"flags"参数下,你会看到各种数值:见"/proc/cpuinfo中的flags是什么意思?&quot。 其中,有一个名为 "lm":"Long Mode"(x86-64:amd64,也被称为Intel 64,即64位能力)。

lm ==> 64-bit processor

或者使用lshw(正如Rolf of Saxony所提到的下文),不使用sudo(只是为了搜索cpu宽度)。

lshw -class cpu|grep "^       width"|uniq|awk '{print $2}'

注意:你可以在安装32位内核的情况下拥有64位CPU
(正如ysdx他/她自己的答案中提到的,"现在,一个系统可以是多架构,所以无论如何这都是没有意义的。你可能想找到编译器的默认目标")

评论(13)

如果你运行的是64位平台,你会在uname -a的输出中看到x86_64或非常类似的东西。

要获得你的具体机器硬件名称,请运行

uname -m

您还可以调用

getconf LONG_BIT

它返回32或64

评论(6)

该系统是32位的。uname中的iX86意味着它是32位的架构。如果是64位,它将返回

Linux mars 2.6.9-67.0.15.ELsmp #1 SMP Tue Apr 22 13:50:33 EDT 2008 x86_64 i686 x86_64 x86_64 GNU/Linux
评论(1)