私のLinuxARM 32ビットまたは64ビットですか?

Intelの下でuname -mの結果を見て、OSが32かどうかを確認できます。 64ビットですが、ARMでは次のようになります。

armv7l 

推測

file /usr/bin/ls 

私は32ビットOSを使用していますが、これを簡単に知るにはどうすればよいですか?

コメント

  • arm7は32ビットです。 。ARMv8-A architecture, announced in October 2011,[6] adds support for a 64-bit address space and 64-bit arithmetic. — wikipedia
  • @richard推測していましたが、64ビットバリアントの名前は何ですか?
  • I ' ARMマシンにアクセスできませんが、uname -agcc -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.2 F32-bit_architecture
  • Armは32ビットcpuの中で最後に64ビットになりました(死んだものを除く)。ほとんどが64ビットになり、マーケティングが不十分だったために死にました。 etterで十分です。 64ビットを追加したのはAMDでしたが、Intelx86は最後から2番目でした。

回答

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

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

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

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

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

$ uname -m armv7l 

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

コメント

  • 私は'あなたの答えに異議を唱えませんが、残念ながらandroidはLinuxであるため、ローカルに表示し、読み取らないコマンドがあると思われます。一部のページのドキュメント
  • @THESorcerer AndroidはLinuxカーネルを使用していますが、Linuxシステムではありません。 Linuxユーザーランドツールはありません(非常に小さなサブセットのみ)。 Androidでは、ベースOSで64ビットのサポートが一貫していると思います。そのため、cat /proc/$$/mapsを使用すると、adbコマンドラインからシステムが64ビットか32ビットかがわかります。
  • ARMv8(CRC、オプションのCryptoなし)であるRaspberry Pi 3は、ARMv8であっても、armv7lを報告すると思います。したがって、'間違ったCPUが報告されることは間違いありません。
  • @jww armv7lが報告された場合は、 'が32ビットカーネルを実行していることを意味します。 64ビットCPUで32ビットカーネルを実行できます。 CPUに関する情報が必要な場合は、/proc/cpuinfoをお読みください。
  • uname -mは、" aarch64

。 / proc / cpuinfoは、'常にプロセッサの名前を含むとは限りません。

回答

リチャードが指摘しているように、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 からの出力は、いくつかの重要な手がかりを提供する可能性があります。何らかの理由で自動チェックが必要な場合、「モデル名」フィールドにマップされたテーブルを作成することは、1つの潜在的に適切な方法のように思われます(「モデル」、「CPUファミリ」などの他のフィールドはオプションに見えますが、そうではありません」 Broadcom 2708ARMv6プロセッサではまったく表示されません。

コメント

  • armv7lは32ビットで正しいですか?
  • @bakalolo質問と受け入れられた回答をゆっくり読んでください;)

回答

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

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

回答

ビット数を確認するほとんどの方法はどういうわけかarm7 = 32ビットであることを知っていますが、それは本当かもしれませんが、

pi@rpi9:~ $ getconf LONG_BIT 32 

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

p>

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 

コメント

  • getconfLONG_BITは非常に簡単です

回答

次のことを試してください。

 // -*- 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*です。

コメント

回答

64ビットコンピュータではありません。AllwinnerH8です。 、魔女はダブルARM-7です。 8コア、64ビット、powervr、sgx 544、倍速(700mhz)。

いいえ、64ビットに対応しています。OSだけで32になる可能性があります。

コメント

  • AllwinnerH8を使用しているOP 'はどこで見つかりましたか?アーキテクチャはarmv7lであり、明らかに64ビットのもの
  • 'は、3番目を使用する代わりに、システム内から目的の情報を見つける方法を示す方がよいでしょう。 -外部ソースからのパーティ情報。これは、回答よりもコメントに適しています(したがって、すべての反対票)。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です