当我输入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位?
这在编写配置脚本时很有用,例如:我为什么体系结构构建?
当前回答
如果将1向左移32,得到1,系统就是32位的。 如果将1向左移动64位得到1,系统就是64位的。
换句话说,
如果echo $((1<<32))给出1,则系统是32位的。
如果echo $((1<<64))返回1,则系统为64位。
其他回答
如果您运行的是64位平台,那么在uname -a的输出中会看到x86_64或类似的东西
运行特定的机器硬件名称
uname -m
你也可以打电话
getconf LONG_BIT
哪个返回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在他/她自己的回答中提到的,“现在,一个系统可以是多拱的,所以它无论如何都没有意义。你可能想要找到编译器的默认目标”)
命令
$ arch
等于
$ uname -m
但打字速度是原来的两倍
我想知道在Debian中构建软件的具体情况(安装的Debian系统可以是32位版本,具有32位内核、库等,也可以是64位版本,其中的内容是为64位而不是32位的兼容模式编译的)。
Debian包本身在实际创建包含所有元数据(包括平台体系结构)的包时需要知道它们是用于什么体系结构的(当然),因此有一个打包工具可以输出它以供其他打包工具和脚本使用,称为dpkg-architecture。它既包括它被配置为构建的目的,也包括当前主机。(通常情况下,这些都是一样的。)64位机器上的输出示例:
DEB_BUILD_ARCH=amd64
DEB_BUILD_ARCH_OS=linux
DEB_BUILD_ARCH_CPU=amd64
DEB_BUILD_GNU_CPU=x86_64
DEB_BUILD_GNU_SYSTEM=linux-gnu
DEB_BUILD_GNU_TYPE=x86_64-linux-gnu
DEB_HOST_ARCH=amd64
DEB_HOST_ARCH_OS=linux
DEB_HOST_ARCH_CPU=amd64
DEB_HOST_GNU_CPU=x86_64
DEB_HOST_GNU_SYSTEM=linux-gnu
DEB_HOST_GNU_TYPE=x86_64-linux-gnu
您可以只打印其中一个变量,或者使用命令行选项对dpkg-architecture的值进行测试。
我不知道dpkg-architecture是如何推导体系结构的,但是您可以查看它的文档或源代码(dpkg-architecture和dpkg系统的大部分代码都是Perl)。
如果您使用的是64位操作系统,uname -a的输出信息中有x86_64或ia64,而不是i686。因为你没有这两条弦中的任何一条;你有一个32位的操作系统(注意,这并不意味着你的CPU不是64位)。