回答:
「uname -m」は、探しているコマンドです。最新のIntelおよびAMDプロセッサで32ビットと64ビットの両方を実行できるため、「uname -p」は役に立ちません(さらに、最近ではほとんど機能しません。ここでは、core2は「uname -p」に対する応答を考えています。 「不明」です)。
一部のハードウェアおよびシステム関連のパッケージは安全のために32ビットと64ビットの両方のライブラリをインストールするため、(推奨されているように)/ usr / lib64の存在を探すことも助けにはなりません。私の(debian)システムでは、fakerootパッケージがまさにそれを行います。
「uname -m」の出力については、i386またはi686の場合は32ビット、x86_64(またはalpha、またはia64または私が見たことがない他の64ビットアーキテクチャの場合)は64ビットです。
(おもしろいことに、私の64ビットFreeBSDサーバーは "amd64"を返します。これはIntelクアッドコアにとっては少し奇妙かもしれませんが、x86 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_release -a
クロスディストリビューションの出力であり、使用可能なアーキテクチャ固有のLSBモジュールを報告します。
lsb_release -a
出力ユーザランドのアーキテクチャない
別の方法は、perlに長整数のサイズがどのようなものであると言っているかをperlに尋ねることです。
$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
64
対
$ 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
対
[...]
> EOC
$ gcc -Wall -o bits bits.c
$ ./bits
32
:-)
の複製として:
Linux + Linuxバージョン32ビットまたは64ビットを確認する方法
uname -mは、カーネルの実行中の「アーキテクチャ」/アーキテクチャのみを提供します。64ビット対応のCPUで32ビットGNU / Linuxディストリビューションを実行しているかどうかはわかりません。
CPU能力を知るには:
cat /proc/cpuinfo
'LM'フラグは、 'LONG MODE'(64ビット拡張、AMDのAMD64またはIntelのEM64T)を表すため、64ビットシステムに存在する必要があります。
/ usr / lib64がある場合、x86_64を実行しています。
Brad Gilbertのコマンドにはperlバグがありました。私はそれを修正し、以下のコマンドが機能します:cat / proc / cpuinfo | grep ^ flags | perl -e '$ = <>; print($? "x86_64 \ n": "not x86_64 \ n")'