Answers:
“ 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位体系结构的历史,那完全可以理解)
uname -a并查找x86_64。如果您想知道您的CPU是否可以处理64位,请使用cat / proc / cpuinfo并在标志中查找lm。
只是为了使事情变得混乱,您可以运行具有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模块。
lsb_release -a
是没有输出用户态的体系结构
另一种方法是询问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
:-)
作为以下项的副本:
uname -m仅会为您提供正在运行的内核“ arch” /体系结构。它不会告诉您您是否正在64位CPU上运行32位GNU / Linux发行版。
要了解您的CPU功能:
cat /proc/cpuinfo
“ LM”标志应该在64位系统中出现,因为它表示“长模式”(64位扩展名,AMD的AMD64或英特尔的EM64T)。
$ uname -p
x86_64
布拉德·吉尔伯特(Brad Gilbert)的命令有一个perl错误。我已经修复它,下面的命令起作用:cat / proc / cpuinfo | grep ^ flags | perl -e'$ = <>; print($?“ x86_64 \ n”:“不是x86_64 \ n”)'