我如何知道我是否正在运行32位或64位Linux?

在不同的发行版中运行的命令是什么?

“uname -m”是你正在查找的命令。 你可以在现代英特尔和AMD处理器上运行32位和64位,所以“uname -p”不会帮你(另外现在大多数都不行,这里core2认为对“uname -p”是“未知”)。

寻找是否存在/ usr / lib64(如上所述)也不会帮助你,因为一些硬件和系统相关的软件包会同时安装32位和64位库以保证安全。 在我的(debian)系统上,fakeroot包就是这样做的。

至于“uname -m”的输出,如果是i386或者i686的话就是32bit,如果是x86_64(或者alpha,或者ia64或者其他一些64bit的架构,我从来没有见过:),那就是64bit。

(除此之外,我的64位FreeBSD服务器返回“amd64”,这对于intel的quadcore来说可能有点奇怪,但是如果你知道x86 64位架构的历史则完全可以理解)

uname -a并查找x86_64。 如果你想知道你的CPU是否可以处理64位,cat / proc / cpuinfo和在标志内寻找lm。

对于RedHat / CentOS:

$ uname -a Linux cs-centos 2.6.18-92.1.22.el5 #1 SMP Tue Dec 16 12:03:43 EST 2008 i686 athlon i386 GNU/Linux 

32位

  • i686和/或i386

64位

  • uname -a输出中会有x86_64

只是混淆的东西,你可以运行一个32位用户的64位内核,这正是我正在做的。 在这种情况下, uname -m将返回x86_64但是我没有安装任何64位库,因此大多数64位程序将无法运行。

所以一旦你检查uname,你需要寻找/lib64/libc-2.7.so/lib/ld-linux.so.2 /lib/libc-2.7.so看是否有64位和32位库。 而要真正确定,运行这些文件,看看他们是否正确执行。

另一个有用的信息是lsb_release -a的输出,它是一个交叉发行版,它将报告哪些特定于体系结构的LSB模块可用。

$> getconf LONG_BIT答案:32或64。

另一个办法是问perl什么编译器说长整数的大小是:

 $ perl -MConfig -e 'print $Config{longsize}*8 . "\n";' 64 

 $ perl -MConfig -e 'print $Config{longsize}*8 . "\n";' 32 

或者,如果你已经安装了gcc,在C:

 $ cat > bits.c <<EOC > #include <stdlib.h> > #include <stdio.h> > > int main(void) { > printf("%d\n", (int)sizeof(long)*8); > > exit(0); > } > EOC $ gcc -Wall -o bits bits.c $ ./bits 64 

 [...] > EOC $ gcc -Wall -o bits bits.c $ ./bits 32 

🙂

作为以下内容的副本:

Linux +如何validationLinux版本32位或64位

uname -m只会给你内核运行的'arch'/ architecture。 它不会告诉你,如果你正在一个64位的CPU上运行一个32位的GNU / Linux发行版。

要知道你的CPU能力:

  cat /proc/cpuinfo 

“LM”标志应该出现在64位系统中,因为它代表“长模式”(64位扩展,AMD的AMD64或英特尔的EM64T)。

 $ uname -p x86_64 

如果你有/ usr / lib64,你正在运行x86_64 ..

Brad Gilbert的命令有一个perl错误。 我已经解决了它,下面的命令工作:cat / proc / cpuinfo | grep ^ flags | perl -e'$ = <>; print($ ?“x86_64 \ n”:“not x86_64 \ n”)'