如何安装`rustup target list`未收录的Rust Tier 3 target?
Rust Tier 3 target 正确安装与使用方法
问题前提说明
aarch64-apple-ios-sim是Rust官方定义的Tier 3级平台目标,这类目标天生不支持rustup的直接一键安装逻辑:
- 默认不会展示在
rustup target list的可选目标列表中 - Rust官方没有为其提供预编译的标准库组件,因此执行
rustup target add aarch64-apple-ios-sim必然会返回目标不存在的错误,你之前尝试安装失败属于完全预期内的正常结果,不是操作失误。
与Tier 1/2目标的核心差异
- Tier 1、Tier 2目标:Rust官方会提前编译好对应架构的
rust-std标准库组件,托管在rustup的公开组件仓库中,可直接通过rustup target add下载使用,全程不需要本地编译标准库 - Tier 3目标:没有官方预编译的标准库产物,需要基于本地Rust工具链,从源码自行编译对应目标的标准库,才能支撑跨目标编译工作
具体操作步骤
- 安装nightly版本Rust工具链
自定义目标的标准库源码编译功能目前仅在nightly通道可用,执行命令:rustup toolchain install nightly - 为nightly工具链安装源码编译依赖组件
需要获取Rust标准库的本地源码,执行命令:rustup component add rust-src --toolchain nightly - 编译Rust库时触发目标标准库的源码编译流程
不需要预先通过rustup注册或安装目标,直接在项目目录下执行带自定义参数的cargo编译命令即可,以aarch64-apple-ios-sim目标为例:cargo +nightly build --target aarch64-apple-ios-sim -Z build-std补充说明:如果编译过程中出现标准库缺失的报错,可以将编译参数调整为
-Z build-std=std,core,alloc,panic_abort,适配绝大多数iOS平台库的编译需求。
注意事项
- 该方式生成的目标标准库是基于本地nightly工具链即时从源码编译的,不依赖rustup的预编译组件仓库,因此不受目标是否在rustup列表中的限制
- 针对iOS模拟器类目标,如遇链接器报错,可在项目根目录的
.cargo/config.toml中配置对应目标的链接器路径,无需修改rustup全局配置 - 所有Tier 3目标都不适配
rustup target add的直接安装方式,遇到命令报目标不存在的错误时,不需要反复尝试该操作
内容的提问来源于stack exchange,提问作者dalton_c
相关产品推荐
相关产品推荐

