小智 37
“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 位架构的历史,则完全可以理解)
kas*_*ani 15
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
Run Code Online (Sandbox Code Playgroud)
32 位
64 位
只是为了混淆,您可以使用 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 模块可用。