uname -a`と入力すると、次のような出力が得られます。
Linux mars 2.6.9-67.0.15.ELsmp #1 SMP Tue Apr 22 13:50:33 EDT 2008 i686 i686 i386 GNU/Linux
これを見て、与えられたOSが32ビットか64ビットかを知るにはどうしたらいいでしょうか?
これは configure
スクリプトを書くときに役立ちます。例えば、どのアーキテクチャのために構築するのか?
試しにuname -m`を実行してみてください。これは、uname --machine
の略で、出力されます。
x86_64 ==> 64-bit kernel
i686 ==> 32-bit kernel
それ以外の場合、Linuxカーネルではなく、CPUの場合は、次のように入力します。
cat /proc/cpuinfo
と入力するか
grep flags /proc/cpuinfo
flags"パラメータの下には、様々な値が表示されています。
その中に、lm
:Long Mode`(x86-64:amd64、Intel 64とも呼ばれる、64ビット対応)というものがあります。
lm ==> 64-bit processor
あるいは、lshw
を使って]4 (Rolf of Saxonyが以下で述べているように)、sudo
なしで(cpu幅を調べるためだけに)使うこともできます。
lshw -class cpu|grep "^ width"|uniq|awk '{print $2}'
注:32ビットのカーネルをインストールした状態で64ビットのCPUを使用することは可能です。
(ysdxさん7が自分の回答で言及しているように、 "最近のシステムはmultiarchになることがあるので、いずれにしても意味はありません。コンパイラのデフォルトターゲットを探した方がいいかもしれません。)
64ビットのプラットフォームを使用している場合は、uname -a の出力に x86_64 などと表示されます。
特定のマシンのハードウェア名を取得するには、次のように実行します。
uname -m
を呼び出すこともできます。
getconf LONG_BIT
を呼び出すと、32または64のいずれかが返されます。
uname`のiX86は、32ビットアーキテクチャであることを意味します。もし、64ビットだったら、次のように返します。
Linux mars 2.6.9-67.0.15.ELsmp #1 SMP Tue Apr 22 13:50:33 EDT 2008 x86_64 i686 x86_64 x86_64 GNU/Linux