当前位置: 首页 > news >正文

在 Apple 生态中,`aarch64` 和 `arm64` 本质上是相同的架构

在 Apple 生态中,aarch64arm64 本质上是相同的架构,但在不同上下文中有细微区别:

核心区别

术语使用场景位数别名关系
​aarch64​官方 ARM 架构名称 (ARMv8-A 64位)64位ARM64 的标准化名称
​arm64​Apple/LLVM 的惯用命名64位Apple 对 AArch64 的简称

技术细节

  1. ​指令集完全相同​​:
  • 两者都指代 ARMv8-A 64位指令集
  • 二进制完全兼容
  1. ​命名差异来源​​:
  • aarch64 是 ARM 公司的官方术语
  • arm64 是 Apple/LLVM 生态的简化命名
  1. ​Apple 平台的特殊性​​:
# Rust 目标三元组
aarch64-apple-darwin  # Rust 官方命名
arm64-apple-darwin    # 实际等价(但非标准写法)# Xcode 中只识别 arm64
ARCHS = arm64  # 在 Build Settings 中

实践影响

  1. ​Rust 开发​​:
# 必须使用标准目标名称
rustup target add aarch64-apple-darwin  # ✅ 正确
cargo build --target aarch64-apple-darwin# 以下写法会报错
cargo build --target arm64-apple-darwin  # ❌ 错误
  1. ​C/C++ 开发​​:
# Clang 同时接受两种写法
-arch arm64     # ✅ Apple 惯例
-arch aarch64   # ✅ 也可工作
  1. ​二进制交互​​:
# 查看 Mach-O 文件架构
lipo -info libexample.a
# 输出显示为 arm64 (永远不会显示 aarch64)

历史背景

  • ARMv8 发布时采用 AArch64 作为架构名称
  • Apple 从 iOS 11 开始全面转向 64 位时,选择使用 arm64 作为营销名称
  • LLVM 为保持兼容性同时支持两种写法

常见混淆场景

  1. ​跨平台构建时​​:
# 在 Cargo.toml 中指定目标
[target.aarch64-apple-darwin]  # ✅
[target.arm64-apple-darwin]    # ❌ 无效
  1. ​条件编译​​:
#[cfg(target_arch = "aarch64")]  // ✅ 正确写法
#[cfg(target_arch = "arm64")]    // ❌ 不会生效
  1. ​构建脚本中​​:
// build.rs 中检测架构
if cfg!(target_arch = "aarch64") { /*...*/ }  // ✅

总结建议

  1. ​在 Rust 生态中​​:
  • 始终使用 aarch64 标准命名
  • 目标三元组必须写 aarch64-apple-darwin
  1. ​在 Xcode/macOS 开发中​​:
  • 使用 arm64 作为架构标识
  • ARCHSVALID_ARCHS 中配置
  1. ​需要通用二进制时​​:
# 合并两种架构的正确写法
lipo -create \-output universal.a \x86_64/lib.a \aarch64/lib.a  # 注意输入文件路径可能包含 arm64 目录名

这种命名差异本质上是同一架构在不同生态中的术语偏好,实际使用时需注意上下文环境。

http://www.lryc.cn/news/584132.html

相关文章:

  • 解决问题:在cmd中能查看到pnpm版本,在vscode终端中却报错
  • Rust and the Linux Kernel
  • 北京-4年功能测试2年空窗-报培训班学测开-第四十七天
  • 【世纪龙科技】汽车信息化综合实训考核平台(机电方向)-学测
  • 倍福套料VE变量和M函数新增配置
  • python学习打卡:DAY 30 模块和库的导入
  • 2. 【Blazor全栈开发实战指南】-- 目录
  • 敏捷测试中的质量闸门如何设置?
  • STM32F103C8T6单片机内部执行原理及启动流程详解
  • 深入了解 Vim 编辑器:从入门到精通
  • 学习中断配置的一天(第五天)
  • 《PyQt6-3D:开启Python 3D编程新世界 2》
  • Spring Boot中的中介者模式:终结对象交互的“蜘蛛网”困境
  • Synopsys 逻辑综合之 MultiBit Flip-Flop 与 ICG
  • SIMATIC S7-1200的以太网通信能力:协议与资源详细解析
  • 深度学习-正则化
  • 小架构step系列10:日志热更新
  • B2、进度汇报(— 25/06/16)
  • 【运维架构】云计算运维架构师与基础设施,技术路线,Linux证书(标准化/定制化/CNCF,公有云/混合云/私有云)
  • Tomcat:Java Web应用的幕后英雄
  • linux 4.14 kernel屏蔽arm arch timer的方法
  • 防抖在vue中应用
  • Vue前端面试常问问题详解
  • Python-GEE遥感云大数据分析与可视化(如何建立基于云计算的森林监测预警系统)
  • 多元函数的切平面与线性近似:几何直观与计算方法
  • 在指定conda 环境里安装 jupyter 和 python kernel的方法
  • django中如何使用Django REST Framework
  • 网络安全基础概念以及虚拟环境的搭建
  • 快速将照片从三星手机传输到电脑
  • 保姆级搭建harbor私有仓库与docker-ce教程与使用教程