我有两个"解锁"设备,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"和#34; aarch64"不一样,但我一直认为arm64和aarch64是一样的。 (当你在这里把arm64标签放到一个问题时,它甚至会被告知。)
那么,他们真的相同吗?
特别是,对于两个目标的交叉构建库,我应该担心什么?事实上,我考虑到了gcc 5.2.0,但也许还有较低版本。我可以通过
-target=arm64
或
-target=aarch64
根据我所针对的设备,只是担心要配置的其他选项?
编辑嗯,再看一遍,但没有成功。
答案 0 :(得分:36)
似乎ARM64是由Apple和AARCH64由其他人创建的,最着名的是GNU / GCC人员。
经过一些谷歌搜索后,我找到了这个链接:
The LLVM 64-bit ARM64/AArch64 Back-Ends Have Merged
因此有意义的是,iPad称自己为ARM64,因为Apple使用LLVM,而Edge使用AARCH64,因为Android使用的是GNU GCC工具链。
答案 1 :(得分:26)
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指的是同样的事情。
答案 2 :(得分:0)
实际上ppc64苹果是ppc64 / PPC64,例如在移植后仅用aarch64和AARCH64的Android / pi / adrino补丁就花了1 5个字符,所以在Debian下编译Gridcoin的代码比Gridcoin社区多得多。是一个8派,因此它的价值比2年前少了2倍,这是在2017年7月4日oh被俄罗斯人砍死的时候,它升到很高的水平,然后陷入困境,但没有恢复。我有一个sun ultra 80,我打算移植到Caraka,他是“受信任的社区负责人”,又是GRC8的一部分,他问社区谁有非x86硬件可以通过移植来提供帮助,因此源代码像真实的源代码一样被编译并编译在任何平台和架构上。
武器不是新武器,只是重命名了mips。
答案 3 :(得分:0)
Linux 认为它们是一样的;
int mtx[t1][t2];
matrix(t1, t2);
for (int i = 0; i < t1; i++) {
for (int j = 0; j < t2; j++) {
printf("%d ", mtx[i][j]);
}
printf("\n");
}