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

uname -a

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

对于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

适用于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

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

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

那么,它们真的相同吗?

尤其是,在为两个目标交叉构建库的情况下,我应该担心什么?实际上,我想到的是gcc 5.2.0,但也许还有更低的版本。我可以通过吗
-target=arm64

或者
-target=aarch64

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

EDIT 嗯,再找一次,没有成功。

最佳答案

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指的是同一件事。

10-08 14:12