当我输入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位?
这在编写配置脚本时很有用,例如:我为什么体系结构构建?
当我输入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位?
这在编写配置脚本时很有用,例如:我为什么体系结构构建?
当前回答
在Bash中,使用整数溢出:
if ((1 == 1<<32)); then
echo 32bits
else
echo 64bits
fi
它比调用另一个进程或打开文件要高效得多。
其他回答
在Bash中,使用整数溢出:
if ((1 == 1<<32)); then
echo 32bits
else
echo 64bits
fi
它比调用另一个进程或打开文件要高效得多。
首先你必须下载虚拟盒子。然后选择new和32位Linux。然后使用它引导linux。如果它启动,那么它是32位的,如果它不启动,那么它是64位的。
试试uname -m。它缺少uname——machine,输出:
x86_64 ==> 64-bit kernel
i686 ==> 32-bit kernel
否则,对于Linux内核,而是CPU,输入:
cat /proc/cpuinfo
or:
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}'
注意:你可以安装一个64位CPU和一个32位内核。 (正如ysdx在他/她自己的回答中提到的,“现在,一个系统可以是多拱的,所以它无论如何都没有意义。你可能想要找到编译器的默认目标”)
如今,一个系统可以是多拱的,所以无论如何它都没有意义。你可能想要找到编译器的默认目标:
$ cc -v 2>&1 | grep ^Target Target: x86_64-pc-linux-gn
你可以尝试编译一个hello world:
$ echo 'int main() { return 0; }' | cc -x c - -o foo $ file foo foo: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=b114e029a08abfb3c98db93d3dcdb7435b5bba0c, not stripped
如果您运行的是64位平台,那么在uname -a的输出中会看到x86_64或类似的东西
运行特定的机器硬件名称
uname -m
你也可以打电话
getconf LONG_BIT
哪个返回32或64