2015-08-06 2 views
16

У меня есть два «разблокированных» устройства, iPad mini 3 и Galaxy Edge 6, оба наделены терминалом и минималистичным набором команд unix. Я думал, что оба устройства имеют процессоры arm64, но когда я побежалРазличия между arm64 и aarch64

uname -a 

на обоих устройствах я получил следующее:

для IPad мини 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 

для Samsung Galaxy s6 Edge:

[email protected]:/ $ uname -a 
Linux localhost 3.10.61-4497415 #1 SMP PREEMPT Thu Apr 9 15:06:40 KST 2015 **aarch64** GNU/Linux 

Если я не ошибаюсь, последняя информация в обоих случаях, J85mAP и GNU/Linux, подставка для firmw ares и antepenultimate infos, arm64 и aarch64, обозначают процессоры.

Мои вопросы заключаются в следующем: очевидно, что строки «arm64» и «aarch64» не совпадают, но я всегда думал, что arm64 и aarch64 были одинаковыми. (Это даже говорят, когда вы помещаете тег arm64 на вопрос здесь.)

Итак, действительно ли они идентичны?

В частности, о чем я должен беспокоиться в случае библиотек перекрестного строительства для обеих целей? На самом деле, у меня есть gcc 5.2.0, но, возможно, и более низкие версии. Могу ли я просто передать

-target=arm64 

или

-target=aarch64 

согласно которому устройство I целевым и просто беспокоиться об остальных вариантов настройки?

EDIT Хм, ищите это снова, без успеха.

ответ

14

Похоже, что ARM64 был создан Apple и AARCH64 другими, в первую очередь GNU/GCC.

Через некоторое Googling я нашел эту ссылку:

The LLVM 64-bit ARM64/AArch64 Back-Ends Have Merged

Так что имеет смысл, IPad называет себя ARM64, так как Apple, использует LLVM и край использует AARCH64 как Android использует GNU GCC набора инструментов.

+0

Thx для этого ответа.Итак, теоретически, по крайней мере, для кросс-компиляции gcc с mac os или ubuntu в ipad или edge, я не должен беспокоиться о параметре -target, переданном скрипту configure, при условии, что он один из arm64 и aarch64? –

+0

To downvoter: если что-то не так с ответом, не стесняйтесь исправить его или дать другой ответ. –

+1

Хотя у меня нет ничего нового, чтобы добавить к приведенной выше информации, я хотел бы выделить слайд 10 https://events.linuxfoundation.org/images/stories/pdf/lcna_co2012_marinas.pdf - В нем показано, как Linux-ядро ссылается на AARCH64 в Именование ARM64. Таким образом, при перекрестном создании двоичных файлов, которые требуют поддержки заголовков ядра Linux, возможно, ARCH = arm64 будет правильным, даже если цель - «aarch64». – Shrey

4

AArch64 - это 64-разрядное состояние, введенное в архитектуру Armv8-A (https://en.wikipedia.org/wiki/ARM_architecture#ARMv8-A). 32-разрядное состояние, которое обратно совместимо с Armv7-A и предыдущими 32-разрядными архитектурами, называется AArch32. Поэтому триплет GNU для 64-битной ISA является aarch64. Сообщество Linux-ядра выбрало свой порт ядра для этой архитектуры arm64, а не для aarch64, поэтому из-за этого используется часть использования arm64.

Насколько я знаю, бэкэнд Apple для aarch64 был назван arm64, тогда как поддерживаемый сообществом LLVM бэкэнд был назван aarch64 (так как это каноническое имя для 64-битной ISA), а затем эти два были объединены, а бэкэнд теперь называется aarch64.

Так что aarch64 и arm64 относятся к тому же.

Смежные вопросы