Olo*_*rin 58 android gcc arm ios arm64
我有两个"解锁"设备,一个iPad mini 3和一个Galaxy Edge 6,它们都有一个终端和一组简单的unix命令.我认为这两款设备都有arm64处理器,但是当我跑步时
uname -a
Run Code Online (Sandbox Code Playgroud)
在两台设备上我得到以下内容:
对于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
Run Code Online (Sandbox Code Playgroud)
对于三星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
Run Code Online (Sandbox Code Playgroud)
如果我没有错,那么J85mAP和GNU/Linux的最后一个信息代表固件,而倒数第二个信息,arm64和aarch64代表处理器.
我的问题如下:显然字符串"arm64"和"aarch64"不一样,但我一直认为arm64和aarch64是相同的.(甚至告诉你何时将arm64标签放在这里的问题上.)
那么,他们真的相同吗?
特别是,对于两个目标的交叉构建库,我应该担心什么?事实上,我考虑到了gcc 5.2.0,但也许还有较低版本.我可以通过
-target=arm64
Run Code Online (Sandbox Code Playgroud)
要么
-target=aarch64
Run Code Online (Sandbox Code Playgroud)
根据我的目标设备,只是担心配置的其余选项?
编辑 Hum,再次寻找,但没有成功.
pel*_*lus 42
似乎ARM64是由Apple和AARCH64由其他人创建的,最着名的是GNU/GCC人员.
经过一些谷歌搜索后,我发现了这个链接:
所以有意义的是,iPad称自己为ARM64,因为Apple使用LLVM,而Edge使用AARCH64,因为Android使用的是GNU GCC工具链.
小智 33
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指的是同一个东西.
小智 7
“AArch64”是官方名称,意思是“Arm Architecture 64-bit”。
“arm64”是一些人使用的非官方名称,因为官方名称很糟糕。
最初只有 32 位架构,称为“ARM”。然后在 2011 年 10 月, ARMv8-A 规范添加了一个名为“AArch64”的新 64 位执行状态,追溯性地将旧的 32 位架构重新命名为“AArch32”。然后,更让人困惑的是,2017 年,该公司将品牌名称从“ARM”(“Advanced RISC Machines”的缩写)更名为“Arm”。
Linux 于 2012 年添加了对 AArch64 的支持。该补丁集最初称为“aarch64”,但后来重命名为“arm64”。LLVM 社区和 Apple 于 2012 年开始并行在 clang 中支持它,LLVM 社区将其称为“aarch64”,Apple 将其称为“arm64”。Apple 开源了他们的更改,这两项工作以不同的名称共同存在于 LLVM 中,并最终于 2014 年合并,因此 LLVM/clang 现在只是将其称为“aarch64”。
归档时间: |
|
查看次数: |
71124 次 |
最近记录: |