我有两个“解锁”设备,一个 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
适用于三星 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 架构中引入的 64 位状态 (https://en.wikipedia.org/wiki/ARM_architecture#ARMv8-A)。向后兼容 Armv7-A 和以前的 32 位 Arm 架构的 32 位状态称为 AArch32。 因此 64 位 ISA 的 GNU 三元组是 aarch64。 Linux 内核社区选择将他们的内核端口称为此架构 arm64 而不是 aarch64,因此这就是一些 arm64 使用的来源。
据我所知,aarch64 的 Apple 后端称为 arm64,而 LLVM 社区开发的后端称为 aarch64(因为它是 64 位 ISA 的规范名称),后来两者合并,现在后端称为 aarch64。
所以 AArch64 和 ARM64 指的是同一个东西。
关于android - arm64和aarch64的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31851611/