在不同的发行版中运行的命令是什么?
“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位
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”)'