回答:
お試しくださいuname -m
。これは不足してuname --machine
おり、次のように出力されます。
x86_64 ==> 64-bit kernel
i686 ==> 32-bit kernel
それ以外の場合は、Linuxカーネルではなく、CPUに対して次のように入力します。
cat /proc/cpuinfo
または:
grep flags /proc/cpuinfo
「フラグ」パラメータの下で、あなたはさまざまな値が表示されます。「を参照してください?PROC / cpuinfoの/中フラグが何を意味するのか」その中でも、1の名前はlm
:Long Mode
(x86-64の:AMD64、また、すなわち64ビットIntel 64、として知られています対応)
lm ==> 64-bit processor
または、使用lshw
せずに(以下でRolf of Saxonyが言及)、なしsudo
(CPU幅をgrepするためだけ):
lshw -class cpu|grep "^ width"|uniq|awk '{print $2}'
注:64ビットCPUと32ビットカーネルをインストールできます。
(ようysdxがに言及し、彼/彼女の自身の答え、「今日では、システムができmultiarchそれはとにかく意味がありませんので。あなたは、コンパイラのデフォルトターゲットを見つけたいかもしれません」)
uname -i
、uname -p
とuname -m
示して?
64ビットのプラットフォームを実行している場合は、x86_64またはuname -aの出力に非常に類似したものが表示されます。
特定のマシンのハードウェア名を取得するには
uname -m
あなたも呼び出すことができます
getconf LONG_BIT
32または64を返します
uname -m
出力x86_64
getconf LONG_BIT
出力32
どちらが正しいですか?:\
uname -m
はconfigure
、誤った結果をもたらす可能性があるため、QPには役立ちません。getconf LONG_BIT
指定された、によってのために正しいサイズではないかもしれないCライブラリのデフォルトのビットサイズを取得CC
、コンパイラを。
getconf LONG_BIT
32ビットアプリケーションとして構築された32 igを提供する場合があります(通常、32ビットユーザーランドを実行する64ビットカーネル)。
lscpu
あなたのCPUに関する他の情報の中でこれらをリストします:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
...
簡単に判断するためのもう1つの便利なコマンドは次のとおりです。
コマンド:
getconf LONG_BIT
回答:
コマンド
$ arch
に相当
$ uname -m
入力速度は2倍です
Debianでソフトウェアをビルドするためにこれについて特に疑問に思っていました(インストールされているDebianシステムは、32ビットカーネル、ライブラリなどを備えた32ビットバージョン、または64ビット用にコンパイルされたものを備えた64ビットバージョンの場合があります) 32ビット互換モードではなくビット)。
Debianパッケージ自体は、プラットフォームアーキテクチャを含むすべてのメタデータを含むパッケージを実際に作成するときに、(もちろん)アーキテクチャを知る必要があるため、他のパッケージツールや使用するスクリプト用に出力するパッケージツールがあります。dpkg-architecture。これには、ビルド用に構成されているものと現在のホストの両方が含まれています。(通常、これらは同じです。)64ビットマシンでの出力例:
DEB_BUILD_ARCH=amd64
DEB_BUILD_ARCH_OS=linux
DEB_BUILD_ARCH_CPU=amd64
DEB_BUILD_GNU_CPU=x86_64
DEB_BUILD_GNU_SYSTEM=linux-gnu
DEB_BUILD_GNU_TYPE=x86_64-linux-gnu
DEB_HOST_ARCH=amd64
DEB_HOST_ARCH_OS=linux
DEB_HOST_ARCH_CPU=amd64
DEB_HOST_GNU_CPU=x86_64
DEB_HOST_GNU_SYSTEM=linux-gnu
DEB_HOST_GNU_TYPE=x86_64-linux-gnu
dpkg -architectureのコマンドラインオプションを使用して、これらの変数の1つだけを出力するか、それらの値に対してテストを実行できます。
dpkg-architectureがどのようにアーキテクチャを推定するのかはわかりませんが、そのドキュメントやソースコードを見ることができます(dpkg-architectureと一般的なdpkgシステムの多くはPerlです)。
dpkg --architecture
する必要のないホストシステムアーキテクチャを取得するためにdpkg-dev
。
dpkg: error: unknown option --architecture
、14.04のdpkg 1.17.5ubuntuが生成されます。ただし、dpkg-architecture(dpkg-devがインストールされている場合)は問題なく動作します。
dpkg --print-architecture
はDebianで永遠に機能しています。これは機能しますが、Debianとその派生物に限定されています。
#include <stdio.h>
int main(void)
{
printf("%d\n", __WORDSIZE);
return 0;
}
i686の代わりに64ビットOSを使用しているx86_64
場合ia64
、またはの出力にありuname -a
ます。この2つの文字列はありません。32ビットOSを使用している(これは、CPUが64ビットではないという意味ではないことに注意してください)。
uname
出力には、64ビットOSを示す他の値があります。すべての世界がx86またはItaniumであるわけではありません...
そのシステムは32ビットです。iX86 uname
は、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
今日では、システムはマルチアーチになる可能性があるため、とにかく意味がありません。コンパイラーのデフォルトのターゲットを見つけることができます。
$ cc -v 2>&1 | grep ^ Target ターゲット:x86_64-pc-linux-gn
Hello Worldをコンパイルしてみてください。
$ echo 'int main(){return 0; } '| cc -xc--o foo $ファイルfoo foo:ELF 64ビットLSB実行可能ファイル、x86-64、バージョン1(SYSV)、動的リンク、インタープリター/lib64/ld-linux-x86-64.so.2、GNU/Linux 2.6.32、BuildID [sha1] = b114e029a08abfb3c98db93d3dcdb7435b5bba0c、除去されない
cc -v | grep …
、とにかくコンパイラ固有で、1だけ使用することができますcc -dumpmachine
grepをし、GCCによってだけでなく、サポートされている必要はありません。
私は 'C'でそれを行う簡単な関数を書きました:
/*
* check_os_64bit
*
* Returns integer:
* 1 = it is a 64-bit OS
* 0 = it is NOT a 64-bit OS (probably 32-bit)
* < 0 = failure
* -1 = popen failed
* -2 = fgets failed
*
* **WARNING**
* Be CAREFUL! Just testing for a boolean return may not cut it
* with this (trivial) implementation! (Think of when it fails,
* returning -ve; this could be seen as non-zero & therefore true!)
* Suggestions?
*/
static int check_os_64bit(void)
{
FILE *fp=NULL;
char cb64[3];
fp = popen ("getconf LONG_BIT", "r");
if (!fp)
return -1;
if (!fgets(cb64, 3, fp))
return -2;
if (!strncmp (cb64, "64", 3)) {
return 1;
}
else {
return 0;
}
}
「getconf」はいい考えです。
CHAR_BIT*sizeof(void*)
または__WORDSIZE
C.中
fgets
:stackoverflow.com/questions/16323185/...
環境変数を使用して確認することもできます。
echo $HOSTTYPE
結果:
i386
-> 32ビット
x86_64
-> 64ビット
抽出元:http : //www.sysadmit.com/2016/02/linux-como-saber-si-es-32-o-64-bits.html
/bin/bash
環境変数ではないため、組み込み変数です。すでにBashに依存している場合は、これで問題ありません。しかし、結果はすることができi386
、i486
、i586
、i686
その他はので注意してください。
Bashでは、整数オーバーフローを使用します。
if ((1 == 1<<32)); then
echo 32bits
else
echo 64bits
fi
別のプロセスを呼び出したり、ファイルを開いたりするよりもはるかに効率的です。
getconfが使用するシステムコールは最も少ないものです。
$ strace getconf LONG_BIT | wc -l
253
$ strace arch | wc -l
280
$ strace uname -m | wc -l
281
$ strace grep -q lm /proc/cpuinfo | wc -l
301
1を32だけ左にシフトして1を得る場合、システムは32ビットです。1を64だけ左にシフトして1を得る場合、システムは64ビットです。
言い換えると、
if echo $((1<<32)) gives 1 then your system is 32 bit
。
if echo $((1<<64)) gives 1 then your system is 64 bit
。
使用可能なバイナリ(initramfsなど)が大幅に制限されている場合、私の同僚は次のことを提案しました。
$ ls -l /lib*/ld-linux*.so.2
私のALT Linuxシステムでは、i586 /lib/ld-linux.so.2
とx86_64があり/lib64/ld-linux-x86-64.so.2
ます。
$ grep "CONFIG_64" /lib/modules/*/build/.config
# CONFIG_64BIT is not set
まず、Virtual Boxをダウンロードする必要があります。次に、新しい32ビットLinuxを選択します。次に、それを使用してLinuxを起動します。起動する場合は32ビットで、起動しない場合は64ビットです。