異なるディストリビューションで実行するコマンドは何でしょうか?
"uname -m"は、探しているコマンドです。最新のIntelおよびAMDプロセッサーでは32ビットと64ビットの両方を実行できるため、「uname -p」は役に立たないでしょう(加えて、最近はほとんど機能しませんが、このコア2は「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ビットを処理できるかどうかを知りたい場合は、/ proc/cpuinfoをcatし、フラグ内でlmを探します。
$> getconf LONG_BIT
回答: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ビットライブラリが使用可能かどうかを確認する必要があります。実際に確認するには、これらのファイルを実行して、正しく実行されるかどうかを確認します。
もう1つの有用な情報は、クロスディストリビューションであり、使用可能なアーキテクチャ固有のLSBモジュールを報告するlsb_release -a
の出力です。
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
2ビット
64ビット
これを行う別の方法は、長整数のサイズは次のとおりだとコンパイラが言ったPerlに尋ねることです。
$ Perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
64
vs.
$ 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
vs.
[...]
> EOC
$ gcc -Wall -o bits bits.c
$ ./bits
32
:-)
の複製として:
Linux + Linuxバージョン32ビットまたは64ビットを確認する方法
uname -mは、実行中のカーネルの「Arch」/アーキテクチャのみを提供します。 64ビット対応のCPUで32ビットのGNU/Linuxディストリビューションを実行しているかどうかはわかりません。
CPU能力を知るには:
cat /proc/cpuinfo
「LM」フラグは「LONG MODE」(64ビット拡張機能、AMDのAMD64、またはIntelのEM64T)を表すため、64ビットシステムに存在する必要があります。
$ uname -p
x86_64
/ usr/lib64がある場合は、x86_64を実行しています。
Brad GilbertのコマンドにはPerlのバグがありました。私はそれを修正し、以下のコマンドが機能します:cat/proc/cpuinfo | grep ^ flags | Perl -e '$ = <>; print($? "x86_64\n": "not x86_64\n")'