arm64和aarch64的区别

问题描述 投票:0回答:5

我有两个“未锁定”的设备,一个 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

根据我的目标设备,只是担心要配置的其余选项?

编辑哼哼,再找这个,没成功。

android ios gcc arm arm64
5个回答
203
投票

“AArch64”和“ARM64”是同一事物的不同名称。

AArch64 是在 Armv8-A 架构 中引入的 64 位状态。向后兼容 Armv7-A 和以前的 32 位 Arm 架构的 32 位状态称为 AArch32。 因此 64 位 ISA 的 GNU 三元组是 aarch64。 Linux 内核社区选择将他们的内核端口称为此体系结构 arm64 而不是 aarch64,因此这就是一些 arm64 用法的来源。

Apple 为 AArch64 开发的后端称为“ARM64”,而 LLVM 社区开发的后端称为“AArch64”(因为它是 64 位 ISA 的规范名称)。两者于 2014 年合并,后端现在称为“AArch64”。


87
投票

ARM64 似乎是由 Apple 创建的,而 AARCH64 是由其他人创建的,最著名的是 GNU/GCC 人员。

谷歌搜索后,我找到了这个链接:

LLVM 64 位 ARM64/AArch64 后端已合并

所以这是有道理的,iPad 称自己为 ARM64,因为 Apple 使用的是 LLVM,而 Edge 使用的是 AARCH64,因为 Android 使用的是 GNU GCC 工具链。


0
投票

“AArch64”(“Arm Architecture 64”的缩写)是官方名称

“Arm64”是一些人使用的非官方名称,因为官方名称很烂。

AArch64 于 2011 年 10 月在 Armv8-A 中发布。 Linux 于 2012 年添加了对 AArch64 的支持。补丁集最初称为“aarch64”,但重命名为“arm64”。 LLVM 社区和 Apple 于 2012 年开始并行工作以在 clang 中支持它,LLVM 社区将其称为“aarch64”,Apple 将其称为“arm64”。 Apple 开源了他们的更改,这两项工作以不同的名称在 LLVM 中共同存在,并最终于 2014 年合并,因此 LLVM/clang 现在将其称为“aarch64”。

更让人困惑的是,该公司曾经被称为“ARM”,这是“Advanced RISC Machines”的首字母缩写词,但在 2017 年,他们更名为“Arm”。


-1
投票

很容易犯他们不一样的错误。我有一个来自 Maxim Integrated 的库,大概是用 GNU 工具链 (aarch64) 开发的。在arm64的XCode开发环境中是完全不能用的。 MacBook Pro 型号为 A1278。 XCode 是 12.4 版。 macOS 卡特琳娜 v10.15.7。 Mac 上的 ld 命令将指示我们正在尝试链接未知的不受支持的文件格式。进一步的调查表明,我相信用 ar 命令创建的 Maxim 库需要通过在其上运行 ranlib 来修改。起初我以为这是 aarch64 vs arm64 的问题;我错了


-3
投票

GCC 认为他们不同;

https://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html

https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html

LLVM认为他们是一样的;

https://www.phoronix.com/scan.php?page=news_item&px=MTY5ODk

Linux认为它们是一样的;

find ./* -name aarch64
./tools/testing/selftests/kvm/lib/aarch64
./tools/testing/selftests/kvm/include/aarch64
./tools/testing/selftests/kvm/aarch64

find ./* -name arm64
./arch/arm64    
./Documentation/arm64
./Documentation/translations/zh_CN/arm64
./drivers/acpi/arm64
./include/config/crypto/ghash/arm64
./include/config/crypto/crct10dif/arm64
./include/config/crypto/aes/arm64
./include/config/crypto/sha1/arm64
./include/config/crypto/sha2/arm64
./include/config/crypto/sm3/arm64
./include/config/crypto/sha512/arm64
./include/config/arm64
./include/config/exynos/arm64
./scripts/dtc/include-prefixes/arm64
./tools/testing/selftests/arm64
./tools/arch/arm64
./tools/perf/arch/arm64
./tools/perf/pmu-events/arch/arm64
© www.soinside.com 2019 - 2024. All rights reserved.