Linux ARM 32または64ビットですか?


60

インテルではuname -m、OSが32ビットであるか64ビットであるかを知るために結果を見ることができますが、ARMでは次のようになります。

armv7l

から推測した

file /usr/bin/ls

32ビットOSを使用していますが、これをもっと簡単に知る方法はありますか?


3
アーム7は32ビットです。ARMv8-A architecture, announced in October 2011,[6] adds support for a 64-bit address space and 64-bit arithmetic.—ウィキペディア
ctrl-alt-delor 14年

@richard私はそう推測していましたが、64ビットバリアントの名前は何ですか?
クリスメイズ14年

1
ARMマシンにアクセスできませんが、uname -aand の出力は何gcc -vですか?役に立つかもしれません。
テルドン

Announced October 2011, ARMv8-A (often called ARMv8 although not all variants are 64-bit such as ARMv8-R) represents a fundamental change to the ARM architecture. It adds a 64-bit architecture, named "AArch64", and a new "A64" instruction set. AArch64 provides user-space compatibility with ARMv7-A ISA, the 32-bit architecture, therein referred to as "AArch32" and the old 32-bit instruction set, now named "A32" ARM announced their Cortex-A53 and Cortex-A57 cores on 30 October 2012.en.wikipedia.org/wiki/ARM_architecture#64.2F32-bit_architecture
ctrl-alt-delor 14年

Armは、32ビットCPUの最後に64ビットを使用しました(死亡したCPUを除く)。貧弱なマーケティングのために、ほとんどが64ビットになり、その後死亡しました。Intel x86が最後から2番目でしたが、64ビットを追加したのはAMDでした。
ctrl-alt-delor 14年

回答:


75

64ビット対応のCPUで32ビットまたは混合オペレーティングシステムを実行できるため、いくつかのグラデーションがあります。64ビットカーネルを参照してください。ただし、すべての32ビットELF実行可能プロセスは、これはどうですか?詳細な議論(x86用に書かれていますが、そのほとんどはarmにも当てはまります)。

プロセッサモデルはにあり/proc/cpuinfoます。例えば:

$ cat /proc/cpuinfo
Processor       : ARMv7 Processor rev 10 (v7l)

ARMv7(およびそれ以下)は32ビットです。ARMv8では、64ビット命令セットが導入されています。

システムが64ビットバイナリをサポートしているかどうかを確認するには、カーネルアーキテクチャを確認します。

$ uname -m
armv7l

64ビットプロセッサではarmv8unameプロセス自体が32ビットプロセスであるaarch64場合、または64 ビットプロセスである場合、(以上)で始まる文字列が表示されます。(https://stackoverflow.com/questions/45125516/possible-values-for-uname-mも参照してください


2
私はあなたの答えを争うませんが、残念ながらアンドロイドはLINUXされているので、いくつかのページのドキュメントを読むために、ローカルではなく、それを表示するいくつかのコマンド、SOMEWHEREがあると仮定
THESorcerer

1
@THESorcerer AndroidはLinuxカーネルを使用しますが、Linuxシステムではありません。Linuxユーザーランドツールはありません(非常に小さなサブセットのみ)。Androidでは、64ビットサポートはベースOSで一貫していると思うのでcat /proc/$$/maps、システムがadbコマンドラインから64ビットであるか32ビットであるかを知ることができます。
ジル 'SO-悪であるのをやめる'

3
ARMv8(CRC、オプションのCryptoはありません)であるRaspberry Pi 3は、ARMv8でarmv7lあってもレポートすると考えています。したがって、間違ったCPUが報告されると確信しています。

1
@jwwが報告armv7lする場合、32ビットカーネルを実行していることを意味します。64ビットCPUで32ビットカーネルを実行できます。CPUに関する情報が必要な場合は、をお読みください/proc/cpuinfo
ジル 'SO-悪であるのをやめる'

uname -mは「aarch64」を返すだけです。/ proc / cpuinfoには、常にプロセッサの名前が含まれているとは限りません。
ハルサファー

23

リチャードが指摘するように、armv7バリアントはすべて32ビットなので、冗長なラベルarmv7-32などはありません。

Linuxシステムでは、一般的な実行可能ファイルを調べることで簡単に確認できますが、完全には確定していません。

> which bash
/bin/bash
> file /bin/bash
/bin/bash: ELF 32-bit LSB executable, ARM, version 1 (SYSV) ...

64ビットシステム上で32ビット実行可能ファイルを実行することが可能であるため、「明確にではない」と言います。

/procまたはにだまされやすいものはないよう/sysです。からの出力/proc/cpuinfo 、いくつかの重要な手がかりを提供します。何らかの理由で自動チェックが必要な場合、「モデル名」フィールドにマップされたテーブルの作成は、潜在的に適切な方法のように見えます(「モデル」、「CPUファミリ」などのその他のフィールドはオプションに見えますが、そうではありません) tはBroadcom 2708 ARMv6プロセッサに表示されます)。


だから、armv7lは32ビット正しいですか?
バカロロ

1
@bakalolo質問と受け入れられた答えをゆっくり読んでください;)
goldilocks

11

「lshw」パッケージをインストールします。

# lshw
...
    description: Computer
    product: Raspberry Pi 3 Model B Rev 1.2
    width: 32 bits
...

3

ビットカウントを見るためのほとんどの方法は、何らかの方法でarm7 = 32ビットであることを知っているようですが、それは本当かもしれませんが、

pi@rpi9:~ $ getconf LONG_BIT
32

CPUモデルを探したい場合は、通常archを使用します

root@rpi4:~# tr '\0' '\n' </proc/device-tree/model;arch
Raspberry Pi Model B Rev 2
armv6l

pi@rpi9:~ $ tr '\0' '\n' </proc/device-tree/model;arch
Raspberry Pi 3 Model B Rev 1.2
armv7l

getconf LONG_BITは非常に簡単です
Kanaan

1

以下を試してください。

// -*- compile-command: "gcc -Wall -o sizeof sizeof.c && ./sizeof" -*-

#include <stdio.h>
#include <limits.h>

#define size(t) { t x; printf("%s:\t%3lu bit\n", #t, CHAR_BIT * sizeof x); }

int main (int argc, char *argv[])
{
  size(char);
  size(short);
  size(int);
  size(long);
  size(void*);
  return 0;
}

アドレスサイズはvoid*です。


1
sizeofsize_tを使用して印刷する必要がある戻り値%zu。間違った形式指定子を使用すると、未定義の動作が呼び出されます
-phuclv

また、void *のサイズは、必ずしもアーキテクチャのビット幅ではありません。x32 ABI sites.google.com/site/x32abiの
-phuclv

同様に、getconf -a | grep LONG_BIT
kaiwan

2
これはあなたのコンパイラの性質以外の何も教えていません。
rsethc

-5

いいえ、64ビットコンピューターです。それはAllwinner H8であり、魔女はダブルARM-7です。8コア、64ビット、powervr、sgx 544、倍速(700mhz)。

いいえ、64ビットに対応しています。OSだけが32かもしれません。


OPはAllwinner H8を使用していることをどこで見つけましたか?アーキテクチャはarmv7lで、明らかに64ビットではありません
-phuclv

外部ソースからのサードパーティ情報を使用するよりも、システムから目的の情報を見つける方法を示す方が良いでしょう。これは、回答よりもコメントに適しています(したがって、すべてのダウン投票)。
Synetech
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.