如果内核类型(64/32)不能表明你的发行版的位宽,我怎么知道我正在运行什么?

如果内核类型(64/32)不能表明你的发行版的位宽,我怎么知道我正在运行什么?

如果内核类型 (64/32) 不能表明您的发行版是几位的,我怎么知道我正在运行什么?我在用 Ubuntu,我刚刚发现,令我惊讶的是,你可以在 32 位 Linux 发行版上使用 64 位内核……那么我如何才能确定我正在运行的软件类型,64 位还是 32 位?

答案1

只需在命令行上运行它

getconf LONG_BIT

它将返回 32 或 64

答案2

对于 32 位内核,您知道所有应用程序都必须是 32 位的。对于 64 位内核,可以有 32 位和 64 位应用程序和库的任意组合。您必须检查您关心的应用程序以查看它们的类型。您可以使用该file命令检查库或可执行文件的位数。

答案3

cat /proc/version
cat /etc/issue
uname -a

终端中应该会显示有用的信息来阐明您在任何给定机器上运行的内容。

我想说的是,很少会出现内核与整个发行版的软件不同步的情况,当然我也没碰到过这样配置的人,所以一般来说,你可以期待 x86_64 代表一个 64 位操作系统和内核。

由于您使用的是 ubuntu,因此对于任何给定的软件,您都可以简单地运行:

apt-cache policy <packagename>

并寻找明显的迹象,例如我对 skype 的结果:

apt-cache policy skype
skype:
  Installed: 4.2.0.11-0ubuntu0.12.04.1
  Candidate: 4.2.0.11-0ubuntu0.12.04.1
  Version table:
 *** 4.2.0.11-0ubuntu0.12.04.1 0
        500 http://archive.canonical.com/ubuntu/ precise/partner amd64 Packages
        100 /var/lib/dpkg/status

答案4

如果您不记得其他任何一个,我也记不住,那么下面的“技巧”就有效,只需在 C/C++ 中打印指针的长度:

#include <iostream>
using namespace std;

int main( int argc, char *argv[] ) {
    cout << sizeof( void *) << endl;
    return 0;
}

这将在 32 位操作系统上给出“4”(即 4 字节 = 32 位),在 64 位操作系统上给出“8”(即 8 字节 = 64 位)。

相关内容