webwesen Asked: 2009-06-18 12:12:02 +0800 CST2009-06-18 12:12:02 +0800 CST 2009-06-18 12:12:02 +0800 CST 我如何知道我运行的是 32 位还是 64 位 Linux? 772 在不同发行版中运行的命令是什么? linux 64-bit 32-bit 10 个回答 Voted Best Answer flinkflonk 2009-06-18T13:31:55+08:002009-06-18T13:31:55+08:00 “uname -m”是您要查找的命令。您可以在现代英特尔和 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 位架构的历史,则完全可以理解) kashani 2009-06-18T12:15:24+08:002009-06-18T12:15:24+08:00 uname -a 并寻找 x86_64。如果您想知道您的 CPU 是否可以处理 64 位,请 cat /proc/cpuinfo 并在标志中查找 lm。 webwesen 2009-06-18T12:14:39+08:002009-06-18T12:14:39+08:00 对于 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 TRS-80 2009-06-18T20:06:03+08:002009-06-18T20:06:03+08:00 只是为了混淆,你可以运行一个 64 位内核和一个 32 位用户空间,这就是我正在做的事情。在这种情况下,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 模块可用。 Dennis Winter 2010-11-17T23:24:13+08:002010-11-17T23:24:13+08:00 $> getconf LONG_BIT 答案:32 或 64。 asjo 2009-06-18T23:38:00+08:002009-06-18T23:38:00+08:00 另一种方法是询问 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 :-) CloudWeavers 2012-01-04T07:21:30+08:002012-01-04T07:21:30+08:00 作为副本: Linux + 如何验证 linux 版本是 32 位还是 64 位 uname -m只会为您提供正在运行的“arch”/内核架构。它不会告诉您是否在 64 位 CPU 上运行 32 位 GNU/Linux 发行版。 要了解您的 CPU 能力: cat /proc/cpuinfo 'LM' 标志应该出现在 64 位系统中,因为它代表 'LONG MODE'(64 位扩展,AMD 的 AMD64 或 Intel 的 EM64T)。 Matt Simmons 2009-06-18T12:15:24+08:002009-06-18T12:15:24+08:00 $ uname -p x86_64 Cube_Zombie 2009-06-18T12:35:16+08:002009-06-18T12:35:16+08:00 如果你有 /usr/lib64 你正在运行 x86_64.. Sundar 2010-05-27T00:51:33+08:002010-05-27T00:51:33+08:00 Brad Gilbert 的命令有一个 perl 错误。我已经修复它并且以下命令有效: cat /proc/cpuinfo | grep ^标志 | perl -e '$ =<>;print ($ ?"x86_64\n":"not x86_64\n")'
“uname -m”是您要查找的命令。您可以在现代英特尔和 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。
对于 RedHat/CentOS:
32 位
64 位
只是为了混淆,你可以运行一个 64 位内核和一个 32 位用户空间,这就是我正在做的事情。在这种情况下,
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 模块可用。$> getconf LONG_BIT
答案:32 或 64。另一种方法是询问 perl 编译器所说的长整数的大小是:
对比
或者,如果你已经安装了 gcc,在 C 中也一样:
对比
:-)
作为副本:
Linux + 如何验证 linux 版本是 32 位还是 64 位
uname -m只会为您提供正在运行的“arch”/内核架构。它不会告诉您是否在 64 位 CPU 上运行 32 位 GNU/Linux 发行版。
要了解您的 CPU 能力:
'LM' 标志应该出现在 64 位系统中,因为它代表 'LONG MODE'(64 位扩展,AMD 的 AMD64 或 Intel 的 EM64T)。
如果你有 /usr/lib64 你正在运行 x86_64..
Brad Gilbert 的命令有一个 perl 错误。我已经修复它并且以下命令有效: cat /proc/cpuinfo | grep ^标志 | perl -e '$ =<>;print ($ ?"x86_64\n":"not x86_64\n")'