我如何知道我运行的是32位还是64位Linux?


Answers:


37

“ uname -m”是您要查找的命令。您可以在现代intel和AMD处理器上同时运行32位和64位,因此“ uname -p”不会对您有所帮助(此外,这几天它大多不起作用,这是core2认为对“ uname -p”的响应是“未知”)。

寻找/ usr / lib64的存在(如所建议的那样)也不会帮助您,因为一些与硬件和系统相关的软件包将同时安装32位和64位库。在我的(debian)系统上,fakeroot软件包就是这样做的。

至于“ uname -m”的输出,如果是i386或i686,则为32位,如果是x86_64(或alpha,或ia64或我从未见过的其他64位体系结构:),则为64位。

(顺便说一句,我的64位FreeBSD服务器返回“ amd64”,对于英特尔四核可能有点奇怪,但是如果您了解x86 64位体系结构的历史,那完全可以理解)


1
这是否告诉您安装架构或实际的CPU架构。例如,如果您在64位cpu上安装了32位OS,这会返回i686还是x86_64?
2011年

15

uname -a并查找x86_64。如果您想知道您的CPU是否可以处理64位,请使用cat / proc / cpuinfo并在标志中查找lm。


3
猫/ proc / cpuinfo | grep ^ flags | perl -e'$ _ = <>; print“ x86_64 \ n”:“ not x86_64 \ n”'
Brad Gilbert

6

对于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

6

只是为了使事情变得混乱,您可以运行具有32位用户权限的64位内核,这就是我正在做的事情。在这种情况下,uname -m返回x86_64但我没有安装任何64位库,因此大多数64位程序将无法运行。

所以一旦你检查UNAME,你需要寻找/lib64/ld-linux-x86-64.so.2/lib64/libc-2.7.so并且/lib/ld-linux.so.2/lib/libc-2.7.so看到64位和32位库是否可用。并且要真正确保运行这些文件,并查看它们是否正确执行。

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


2
不幸的lsb_release -a是没有输出用户态的体系结构
Joni


2

另一种方法是询问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

:-)


这只是告诉您perl的默认版本是什么..
pjc50

@ pjc50:你的意思是?
09年

1
他的观点是,您可能在64位系统上拥有32位Perl
niXar 2010年

@niXar:我想这是有可能的,但是拥有它将会使...奇怪的Linux发行版。无论如何,请使用C版本;然后是
asjo,2010年

1

作为以下项的副本:

Linux +如何验证Linux版本32位或64位

uname -m仅会为您提供正在运行的内核“ arch” /体系结构。它不会告诉您您是否正在64位CPU上运行32位GNU / Linux发行版。

要了解您的CPU功能:

 cat /proc/cpuinfo

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



0

如果您具有/ usr / lib64,则正在运行x86_64。


3
mkdir / usr / lib128 &&回声“看,我有一台128位计算机!”
niXar 2010年

0

布拉德·吉尔伯特(Brad Gilbert)的命令有一个perl错误。我已经修复它,下面的命令起作用:cat / proc / cpuinfo | grep ^ flags | perl -e'$ = <>; print($?“ x86_64 \ n”:“不是x86_64 \ n”)'

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.