arm64和aarch64之间的区别


86

我有两个“解锁”设备,一个iPad mini 3和一个Galaxy Edge 6,都配备了一个终端和一组简约的unix命令。我以为两个设备都具有arm64处理器,但是当我运行时

在这两种设备上,我得到以下信息:

对于iPad mini 3:

适用于Samsung Galaxy s6 Edge:

如果我没有记错的话,两种情况下的最后一个信息(J85mAP和GNU / Linux)代表固件,而倒数第二个信息(arm64和aarch64)代表处理器。

我的问题如下:显然字符串“ arm64”和“ aarch64”不相同,但是我一直认为arm64和aarch64是相同的。(甚至在您将arm64标签放在此处的问题时,也会被告知。)

那么,它们真的相同吗?

特别是,对于两个目标都需要交叉构建库时,我应该担心什么?实际上,我想到的是gcc 5.2.0,但也许还有更低的版本。我可以通过吗

要么

根据我所针对的设备而担心其余的配置选项?

编辑嗡嗡声,再找一次,但没有成功。

Answers:


67

AArch64是Armv8-A架构(https://en.wikipedia.org/wiki/ARM_architecture#ARMv8-A)中引入的64位状态。向后兼容Armv7-A和先前的32位Arm架构的32位状态称为AArch32。因此,用于64位ISA的GNU三元组是aarch64。Linux内核社区选择将其内核端口称为该体系结构arm64,而不是aarch64,因此这是一些arm64用法的来源。

据我所知,用于aarch64的Apple后端称为arm64,而LLVM社区开发的后端称为aarch64(因为它是64位ISA的规范名称),后来将两者合并,现在的后端称为aarch64。 。

因此,AArch64和ARM64指的是同一件事。


57

看起来ARM64是由Apple创建的,而AARCH64是由其他人(最著名的是GNU / GCC的)创建的。

经过一番谷歌搜索后,我发现此链接:

LLVM 64位ARM64 / AArch64后端已合并

所以说得通,iPad称自己为ARM64,就像苹果使用LLVM,而Edge则使用AARCH64,就像Android使用GNU GCC工具链一样。


谢谢这个答案。因此,至少从理论上讲,对于将gcc从mac os或ubuntu交叉编译到ipad或edge,我不应该真正担心传递给configure脚本的-target选项,只要它是arm64和aarch64中的一个?
Olorin

6
尽管我没有什么新鲜的要补充上述信息,但我想强调一下events.linuxfoundation.org/images/stories/pdf/…的幻灯片10-它强调了Linux内核在ARM64命名下如何引用AARCH64。因此,尽管交叉构建需要支持Linux内核头文件的二进制文件,但ARCH = arm64可能是正确的-即使目标是“ aarch64”。
Shrey

3
您的回答是正确的。该 承诺铛为ARM64 / AArch64合并是非常简单的。在大多数情况下,arm64和aarch64都是同义词。
加百利家长
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.