当我输入 "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是什么意思?"。 其中,有一个名为 "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在他/她自己的答案中提到的,"现在,一个系统可以是多架构,所以无论如何这都是没有意义的。你可能想找到编译器的默认目标")
如果你运行的是64位平台,你会在uname -a的输出中看到x86_64或非常类似的东西。
要获得你的具体机器硬件名称,请运行
uname -m
您还可以调用
getconf LONG_BIT
它返回32或64
该系统是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