Android arm64和aarch64之间的差异
我有两台“解锁”设备,一台iPad mini 3和一台Galaxy Edge 6,它们都配有终端和一组最简单的unix命令。我以为这两个设备都有arm64处理器,但当我运行Android arm64和aarch64之间的差异,android,ios,gcc,arm,arm64,Android,Ios,Gcc,Arm,Arm64,我有两台“解锁”设备,一台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 201
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和AARC64,代表处理器
我的问题如下:显然字符串“arm64”和“aarch64”不一样,但我一直认为arm64和aarch64是一样的。(当您将arm64标签放在此处的问题上时,它甚至会被告知。)
那么,它们真的相同吗
特别是,在为两个目标交叉构建库的情况下,我应该担心什么?事实上,我考虑的是gcc 5.2.0,但也可能是较低版本。我可以通过吗
-target=arm64
或
根据我的目标设备,只需担心要配置的其余选项
编辑哼,再次寻找这个,但没有成功。看来ARM64是由苹果公司和AARC64由其他公司创建的,最著名的是GNU/GCC公司 通过谷歌搜索,我找到了以下链接:
因此,iPad称自己为ARM64是有道理的,因为苹果使用LLVM,Edge使用AARC64,因为Android使用GNU GCC工具链。AARC64是Armv8-A架构中引入的64位状态()。与Armv7-A和以前的32位Arm体系结构向后兼容的32位状态称为AArch32。 因此,64位ISA的GNU三元组是aarch64。 Linux内核社区选择将他们的内核端口调用到这个体系结构arm64而不是aarch64,所以这就是一些arm64用法的来源 据我所知,aarch64的苹果后端名为arm64,而LLVM社区开发的后端名为aarch64(因为它是64位ISA的标准名称),后来两者合并,现在后端名为aarch64
所以AArch64和ARM64指的是同一件事。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
谢谢你的回答。因此,至少在理论上,对于将gcc从mac os或ubuntu交叉编译到ipad或edge,我不应该真正担心传递给配置脚本的-target选项,只要它是arm64和AARC64中的一个?尽管我没有什么新的添加到上述信息,我想重点介绍的幻灯片10—它重点介绍Linux内核如何在ARM64命名下引用AARCH64。因此,在交叉构建需要支持linux内核头的二进制文件时,ARCH=arm64可能是正确的,即使目标是“aarch64”。您的答案是正确的。ARM64/AArch64合并的方法非常简单。arm64和aarch64在大多数情况下都是同义词。
containerd
将“aarch64”标准化为“arm64”,因此从这个意义上讲,它们都是相同的
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