Unterschiede zwischen arm64 und aarch64


80

Ich habe zwei "entsperrte" Geräte, ein iPad mini 3 und ein Galaxy Edge 6, die beide mit einem Terminal und einem minimalistischen Satz von Unix-Befehlen ausgestattet sind. Ich dachte, beide Geräte haben arm64-Prozessoren, aber als ich lief

uname -a

Auf beiden Geräten habe ich folgendes bekommen:

für das iPad mini 3:

xxxxs-iPad:/var/mobile root# uname -a
Darwin xxxx-iPad 14.0.0 Darwin Kernel Version 14.0.0: Wed Jun 24 00:50:15 PDT 2015; root:xnu-2784.30.7-30/RELEASE_ARM64_S5L8960X iPad4, **arm64**, J85mAP

für das Samsung Galaxy s6 Edge:

u0_a203@zerolte:/ $ uname -a
Linux localhost 3.10.61-4497415 #1 SMP PREEMPT Thu Apr 9 15:06:40 KST 2015 **aarch64** GNU/Linux

Wenn ich mich nicht irre, stehen die letzten Informationen in beiden Fällen, J85mAP und GNU / Linux, für Firmwares und die vorletzten Infos, arm64 und aarch64, für die Prozessoren.

Meine Fragen lauten wie folgt: Offensichtlich sind die Zeichenfolgen "arm64" und "aarch64" nicht gleich, aber ich dachte immer, arm64 und aarch64 wären gleich. (Es wird sogar gesagt, wenn Sie das arm64-Tag hier auf eine Frage setzen.)

Sind sie wirklich identisch?

Worüber sollte ich mich insbesondere bei Cross-Building-Bibliotheken für beide Ziele Gedanken machen? In der Tat habe ich gcc 5.2.0 im Sinn, aber vielleicht auch niedrigere Versionen. Kann ich einfach bestehen?

-target=arm64

oder

-target=aarch64

Auf welches Gerät ziele ich ab und mache mir nur Gedanken über die restlichen zu konfigurierenden Optionen?

EDIT Hum, suchen Sie dies erneut, ohne Erfolg.

Antworten:


61

AArch64 ist der 64-Bit-Status, der in der Armv8-A-Architektur eingeführt wurde ( https://en.wikipedia.org/wiki/ARM_architecture#ARMv8-A ). Der 32-Bit-Status, der abwärtskompatibel mit Armv7-A und früheren 32-Bit-Arm-Architekturen ist, wird als AArch32 bezeichnet. Daher ist das GNU-Triplett für die 64-Bit-ISA aarch64. Die Linux-Kernel-Community hat sich dafür entschieden, ihren Kernel-Port auf diese Architektur arm64 anstatt auf aarch64 zu beziehen. Daher stammt ein Teil der arm64-Nutzung von dort.

Soweit ich weiß, hieß das Apple-Backend für aarch64 arm64, während das von der LLVM-Community entwickelte Backend aarch64 hieß (wie es der kanonische Name für die 64-Bit-ISA ist). Später wurden die beiden zusammengeführt und das Backend heißt jetzt aarch64 .

So AArch64 und ARM64 beziehen sich auf die gleiche Sache.


56

Es scheint, dass ARM64 von Apple und AARCH64 von den anderen entwickelt wurde, insbesondere von GNU / GCC-Leuten.

Nach einigem googeln habe ich diesen Link gefunden:

Die LLVM 64-Bit-ARM64 / AArch64-Back-Ends wurden zusammengeführt

Es macht also Sinn, dass sich das iPad ARM64 nennt, da Apple LLVM verwendet, und Edge AARCH64 verwendet, da Android die GNU GCC-Toolchain verwendet.


Danke für diese Antwort. Zumindest theoretisch sollte ich mir also für das Cross-Kompilieren von gcc von Mac OS oder Ubuntu zu iPad oder Edge keine Gedanken über die Option -target machen, die an das Konfigurationsskript übergeben wird, vorausgesetzt, es ist eine unter arm64 und aarch64?
Olorin

6
Obwohl ich den obigen Informationen nichts Neues hinzufügen kann, möchte ich die Folie 10 von events.linuxfoundation.org/images/stories/pdf/… hervorheben. Sie zeigt, wie der Linux-Kernel unter ARM64-Benennung auf AARCH64 verweist. Beim Crossbuilding von Binärdateien, die Unterstützung für Linux-Kernel-Header erfordern, wäre ARCH = arm64 wahrscheinlich das richtige - obwohl das Ziel "aarch64" ist.
Shrey

3
Ihre Antwort ist richtig. Das Commit, für diese ARM64 / AArch64-Zusammenführung zu klirren, ist ziemlich einfach. arm64 und aarch64 erscheinen für die meisten Zwecke synonym.
Gabriel Parent
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.