解決策 1:
「uname -m」は、探しているコマンドです。最新の Intel および AMD プロセッサでは 32 ビットと 64 ビットの両方を実行できるため、「uname -p」は役に立ちません (さらに、最近はほとんど機能しません。は「不明」です)。
/usr/lib64 の存在を探しても (提案されているように)、役に立ちません。ハードウェアとシステムに関連するパッケージの中には、安全のために 32 ビットと 64 ビットの両方のライブラリをインストールするものがあるからです。私の (debian) システムでは、fakeroot パッケージがまさにそれを行います。
「uname -m」の出力に関しては、i386 または i686 の場合は 32 ビットであり、x86_64 (またはアルファ、または ia64、または私が見たことのない他の 64 ビット アーキテクチャ:) の場合は 64 ビットです。
(余談ですが、私の 64 ビット FreeBSD サーバーは "amd64" を返します。これはインテルのクアッドコアには少し奇妙かもしれませんが、x86 64 ビット アーキテクチャの歴史を知っていれば完全に理解できます)
解決策 2:
uname -a を実行し、x86_64 を探します。 CPU が 64 ビットを処理できるかどうかを知りたい場合は、cat /proc/cpuinfo を実行し、フラグ内で lm を探します。
解決策 3:
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 ビット
- x86_64 が必要です uname -a で 出力
解決策 4:
混乱させるために、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 ビットのライブラリが利用可能かどうかを確認します。本当に確認するには、これらのファイルを実行して、正しく実行されるかどうかを確認してください。
もう 1 つの有用な情報は、lsb_release -a
の出力です。 これはクロスディストリビューションであり、利用可能なアーキテクチャ固有の LSB モジュールを報告します。
解決策 5:
$> getconf LONG_BIT
答え:32 か 64 です。