web-dev-qa-db-ja.com

32ビットLinuxと64ビットLinuxのどちらを実行しているかを知るにはどうすればよいですか?

異なるディストリビューションで実行するコマンドは何でしょうか?

23
webwesen

"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ビットアーキテクチャの歴史を知っていれば完全に理解できます)

37
flinkflonk

uname -aとx86_64を探します。 CPUが64ビットを処理できるかどうかを知りたい場合は、/ proc/cpuinfoをcatし、フラグ内でlmを探します。

15
kashani

$> getconf LONG_BIT回答:32または64。

6
Dennis Winter

混乱を招くだけで、64ビットカーネルを32ビットのユーザーランドで実行できます。この場合、uname -mx86_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の出力です。

6
TRS-80

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ビット

  • i686および/またはi386

64ビット

  • x86_64 inuname -aの出力
6
webwesen

これを行う別の方法は、長整数のサイズは次のとおりだとコンパイラが言った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

:-)

2
asjo

の複製として:

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ビットシステムに存在する必要があります。

1
CloudWeavers
$ uname -p

x86_64
0
Matt Simmons

/ usr/lib64がある場合は、x86_64を実行しています。

0
Cube_Zombie

Brad GilbertのコマンドにはPerlのバグがありました。私はそれを修正し、以下のコマンドが機能します:cat/proc/cpuinfo | grep ^ flags | Perl -e '$ = <>; print($? "x86_64\n": "not x86_64\n")'

0
Sundar