平台支持

对不同平台(“目标”)的支持被组织成三个层级,每个层级都有不同的保证集。有关每个层级目标策略的更多信息,请参阅目标层级策略

目标由其“目标三元组”标识,该三元组是告知编译器应生成哪种输出的字符串。

组件可用性跟踪这里

第一层级,带主机工具

第一层级目标可以被认为是“保证可行”。Rust 项目为每个第一层级目标构建官方二进制发行版,并且自动化测试确保每个第一层级目标在每次更改后都能构建并通过测试。

带主机工具的第一层级目标还支持在目标上本地运行诸如rustccargo之类的工具,并且自动化测试确保主机工具的测试也通过。这允许目标用作开发平台,而不仅仅是编译目标。有关完整要求,请参阅目标层级策略中的带主机工具的第一层级

所有带主机工具的第一层级目标都支持完整的标准库。

目标说明
aarch64-unknown-linux-gnuARM64 Linux(内核 4.1,glibc 2.17+)
i686-pc-windows-gnu32 位 MinGW(Windows 10+)1
i686-pc-windows-msvc32 位 MSVC(Windows 10+)1
i686-unknown-linux-gnu32 位 Linux(内核 3.2+,glibc 2.17+)1
x86_64-apple-darwin64 位 macOS(10.12+,Sierra+)
x86_64-pc-windows-gnu64 位 MinGW(Windows 10+)
x86_64-pc-windows-msvc64 位 MSVC(Windows 10+)
x86_64-unknown-linux-gnu64 位 Linux(内核 3.2+,glibc 2.17+)
1

由于 C ABI 的限制,i686 目标上的浮点支持不符合标准:浮点返回值通过 x87 寄存器传递,因此 NaN 负载位可能会丢失。请参阅问题 #114479

第一层级

第一层级目标可以被认为是“保证可行”。Rust 项目为每个第一层级目标构建官方二进制发行版,并且自动化测试确保每个第一层级目标在每次更改后都能构建并通过测试。有关完整要求,请参阅目标层级策略中的第一层级目标策略

目前,所有第一层级目标都是带主机工具的第一层级

第二层级,带主机工具

第二层级目标可以被认为是“保证可构建”。Rust 项目为每个第二层级目标构建标准库(或在某些情况下,仅构建core库)的官方二进制发行版,并且自动化构建确保每个第二层级目标在每次更改后都能用作构建目标。自动化测试并不总是运行,因此不能保证生成可工作的构建,但第二层级目标通常工作得很好,并且始终欢迎补丁!

在进行修改时,Rust 团队不会仔细审查第二层级目标特定的代码。所有代码都可能存在错误,但这些目标的质量控制水平可能较低。有关标准库代码审查实践的详细信息,请参阅库团队策略

带主机工具的第二层级目标还支持在目标上本地运行诸如rustccargo之类的工具,并且自动化构建确保主机工具也能构建。这允许目标用作开发平台,而不仅仅是编译目标。有关完整要求,请参阅目标层级策略中的带主机工具的第二层级

所有带主机工具的第二层级目标都支持完整的标准库。

注意:rust-docs 组件通常不会为第二层级目标构建,因此 Rustup 可能会安装类似第一层级目标的文档。

目标说明
aarch64-apple-darwinARM64 macOS(11.0+,Big Sur+)
aarch64-pc-windows-msvcARM64 Windows MSVC
aarch64-unknown-linux-muslARM64 Linux,带 musl 1.2.3
arm-unknown-linux-gnueabiARMv6 Linux(内核 3.2,glibc 2.17)
arm-unknown-linux-gnueabihfARMv6 Linux,硬浮点(内核 3.2,glibc 2.17)
armv7-unknown-linux-gnueabihfARMv7-A Linux,硬浮点(内核 3.2,glibc 2.17)
loongarch64-unknown-linux-gnuLoongArch64 Linux,LP64D ABI(内核 5.19,glibc 2.36)
powerpc-unknown-linux-gnuPowerPC Linux(内核 3.2,glibc 2.17)
powerpc64-unknown-linux-gnuPPC64 Linux(内核 3.2,glibc 2.17)
powerpc64le-unknown-linux-gnuPPC64LE Linux(内核 3.10,glibc 2.17)
riscv64gc-unknown-linux-gnuRISC-V Linux(内核 4.20,glibc 2.29)
s390x-unknown-linux-gnuS390x Linux(内核 3.2,glibc 2.17)
x86_64-unknown-freebsd64 位 FreeBSD
x86_64-unknown-illumosillumos
x86_64-unknown-linux-musl带有 musl 1.2.3 的 64 位 Linux
x86_64-unknown-netbsdNetBSD/amd64

第二层级,无主机工具

第二层级目标可以被认为是“保证构建”。Rust 项目为每个第二层级目标构建标准库的官方二进制发行版(或在某些情况下,仅构建 core 库),并且自动化构建确保每个第二层级目标在每次更改后都可以用作构建目标。自动化测试并不总是运行,因此不能保证生成有效的构建,但第二层级目标通常在很大程度上有效,并且始终欢迎补丁!有关完整要求,请参阅目标层级策略中的 第二层级目标策略

下表中的 std 列具有以下含义

  • ✓ 表示完整的标准库可用。
  • * 表示目标仅支持 no_std 开发。
  • ? 表示标准库支持未知或正在开发中。

在进行修改时,Rust 团队不会仔细审查第二层级目标特定的代码。所有代码都可能存在错误,但这些目标的质量控制水平可能较低。有关标准库代码审查实践的详细信息,请参阅库团队策略

注意:rust-docs 组件通常不会为第二层级目标构建,因此 Rustup 可能会安装类似第一层级目标的文档。

目标std说明
aarch64-apple-iosARM64 iOS
aarch64-apple-ios-simARM64 上的 Apple iOS 模拟器
aarch64-fuchsiaaarch64-unknown-fuchsia 的别名
aarch64-unknown-fuchsiaARM64 Fuchsia
aarch64-linux-androidARM64 Android
aarch64-pc-windows-gnullvmARM64 MinGW(Windows 10+),LLVM ABI
aarch64-unknown-linux-ohosARM64 OpenHarmony
aarch64-unknown-none-softfloat*裸机 ARM64,软浮点
aarch64-unknown-none*裸机 ARM64,硬浮点
aarch64-unknown-uefi?ARM64 UEFI
arm-linux-androideabiARMv6 Android
arm-unknown-linux-musleabi带有 musl 1.2.3 的 ARMv6 Linux
arm-unknown-linux-musleabihf带有 musl 1.2.3 的 ARMv6 Linux,硬浮点
armebv7r-none-eabi*裸机 ARMv7-R,大端
armebv7r-none-eabihf*裸机 ARMv7-R,大端,硬浮点
armv5te-unknown-linux-gnueabiARMv5TE Linux(内核 4.4,glibc 2.23)
armv5te-unknown-linux-musleabi带有 musl 1.2.3 的 ARMv5TE Linux
armv7-linux-androideabiARMv7-A Android
armv7-unknown-linux-gnueabiARMv7-A Linux(内核 4.15,glibc 2.27)
armv7-unknown-linux-musleabi带有 musl 1.2.3 的 ARMv7-A Linux
armv7-unknown-linux-musleabihf带有 musl 1.2.3 的 ARMv7-A Linux,硬浮点
armv7-unknown-linux-ohosARMv7-A OpenHarmony
armv7a-none-eabi*裸机 ARMv7-A
armv7r-none-eabi*裸机 ARMv7-R
armv7r-none-eabihf*裸机 ARMv7-R,硬浮点
i586-pc-windows-msvc*32 位 Windows,无 SSE 2
i586-unknown-linux-gnu32 位 Linux,无 SSE(内核 3.2,glibc 2.17) 2
i586-unknown-linux-musl32 位 Linux,无 SSE,musl 1.2.3 2
i686-linux-android32 位 x86 Android 1
i686-pc-windows-gnullvm32 位 x86 MinGW(Windows 10+),LLVM ABI 1
i686-unknown-freebsd32 位 FreeBSD 1
i686-unknown-linux-musl带有 musl 1.2.3 的 32 位 Linux 1
i686-unknown-uefi?32 位 UEFI
loongarch64-unknown-none*
loongarch64-unknown-none-softfloat*
nvptx64-nvidia-cuda*--emit=asm 生成 在 NVIDIA GPU 上运行的 PTX 代码
riscv32imac-unknown-none-elf*裸机 RISC-V(RV32IMAC ISA)
riscv32i-unknown-none-elf*裸机 RISC-V(RV32I ISA)
riscv32im-unknown-none-elf*
riscv32imc-unknown-none-elf*裸机 RISC-V(RV32IMC ISA)
riscv32imafc-unknown-none-elf*裸机 RISC-V(RV32IMAFC ISA)
riscv64gc-unknown-none-elf*裸机 RISC-V(RV64IMAFDC ISA)
riscv64imac-unknown-none-elf*裸机 RISC-V(RV64IMAC ISA)
sparc64-unknown-linux-gnuSPARC Linux(内核 4.4,glibc 2.23)
sparcv9-sun-solarisSPARC Solaris 11,illumos
thumbv6m-none-eabi*裸机 ARMv6-M
thumbv7em-none-eabi*裸机 ARMv7E-M
thumbv7em-none-eabihf*裸机 ARMV7E-M,硬浮点
thumbv7m-none-eabi*裸机 ARMv7-M
thumbv7neon-linux-androideabi带有 NEON 的 Thumb2 模式 ARMv7-A Android
thumbv7neon-unknown-linux-gnueabihf带有 NEON 的 Thumb2 模式 ARMv7-A Linux(内核 4.4,glibc 2.23)
thumbv8m.base-none-eabi*裸机 ARMv8-M 基线
thumbv8m.main-none-eabi*裸机 ARMv8-M 主线
thumbv8m.main-none-eabihf*裸机 ARMv8-M 主线,硬浮点
wasm32-unknown-emscripten通过 Emscripten 的 WebAssembly
wasm32-unknown-unknownWebAssembly
wasm32-wasi带有 WASI 的 WebAssembly(正在 重命名为 wasm32-wasip1
wasm32-wasip1带有 WASI 的 WebAssembly
wasm32-wasip1-threads
x86_64-apple-ios64 位 x86 iOS
x86_64-fortanix-unknown-sgx64 位 Intel SGX 的 Fortanix ABI
x86_64-fuchsiax86_64-unknown-fuchsia 的别名
x86_64-unknown-fuchsia64 位 x86 Fuchsia
x86_64-linux-android64 位 x86 Android
x86_64-pc-solaris64 位 Solaris 11,illumos
x86_64-pc-windows-gnullvm64 位 x86 MinGW(Windows 10+),LLVM ABI
x86_64-unknown-linux-gnux3264 位 Linux(x32 ABI)(内核 4.15,glibc 2.27)
x86_64-unknown-linux-ohosx86_64 OpenHarmony
x86_64-unknown-none*独立/裸机 x86_64,软浮点
x86_64-unknown-redoxRedox 操作系统
x86_64-unknown-uefi?64 位 UEFI
2

i586 目标上的浮点支持不符合标准:用于这些目标的 x87 寄存器和指令不提供符合 IEEE-754 的行为,特别是在舍入和 NaN 负载位方面。请参阅 问题 #114479

第三层级

第三层级目标是 Rust 代码库支持的目标,但 Rust 项目不会自动构建或测试它们,因此它们可能有效也可能无效。官方构建不可用。有关完整要求,请参阅目标层级策略中的 第三层级目标策略

下表中的 std 列具有以下含义

  • ✓ 表示完整的标准库可用。
  • * 表示目标仅支持 no_std 开发。
  • ? 表示标准库支持未知或正在开发中。

在进行修改时,Rust 团队不会仔细审查第三层级目标特定的代码。所有代码都可能存在错误,但这些目标的质量控制水平可能较低。有关标准库代码审查实践的详细信息,请参阅 库团队策略

host 列表示代码库是否包含对构建主机工具的支持。

目标stdhost说明
arm64e-apple-iosARM64e Apple iOS
arm64e-apple-darwinARM64e Apple Darwin
arm64ec-pc-windows-msvc?Arm64EC Windows MSVC
aarch64-apple-ios-macabi?ARM64 上的 Apple Catalyst
aarch64-apple-tvos?ARM64 tvOS
aarch64-apple-tvos-sim?ARM64 tvOS 模拟器
aarch64-apple-watchosARM64 Apple WatchOS
aarch64-apple-watchos-simARM64 Apple WatchOS 模拟器
aarch64-apple-visionosARM64 Apple visionOS
aarch64-apple-visionos-simARM64 Apple visionOS 模拟器
aarch64-kmc-solid_asp3带有 TOPPERS/ASP3 的 ARM64 SOLID
aarch64-nintendo-switch-freestanding*ARM64 Nintendo Switch,Horizon
aarch64-unknown-teeos?ARM64 TEEOS
aarch64-unknown-nto-qnx710ARM64 QNX Neutrino 7.1 RTOS
aarch64-unknown-freebsdARM64 FreeBSD
aarch64-unknown-hermitARM64 Hermit
aarch64-unknown-illumosARM64 illumos
aarch64-unknown-linux-gnu_ilp32ARM64 Linux(ILP32 ABI)
aarch64-unknown-netbsdARM64 NetBSD
aarch64-unknown-openbsdARM64 OpenBSD
aarch64-unknown-redox?ARM64 Redox 操作系统
aarch64-uwp-windows-msvc?
aarch64-wrs-vxworks?
aarch64_be-unknown-linux-gnu_ilp32ARM64 Linux(大端,ILP32 ABI)
aarch64_be-unknown-linux-gnuARM64 Linux(大端)
aarch64_be-unknown-netbsdARM64 NetBSD(大端)
arm64_32-apple-watchos带有 32 位指针的 ARM Apple WatchOS 64 位
armeb-unknown-linux-gnueabi?ARMv6 以来,ARM BE8 是默认的 ARM 大端架构。
armv4t-none-eabi*裸机 ARMv4T
armv4t-unknown-linux-gnueabi?ARMv4T Linux
armv5te-none-eabi*裸机 ARMv5TE
armv5te-unknown-linux-uclibceabi?带有 uClibc 的 ARMv5TE Linux
armv6-unknown-freebsdARMv6 FreeBSD
armv6-unknown-netbsd-eabihf带有硬浮点的 ARMv6 NetBSD
armv6k-nintendo-3ds?ARMv6K Nintendo 3DS,Horizon(需要 devkitARM 工具链)
armv7-sony-vita-newlibeabihfARMv7-A Cortex-A9 Sony PlayStation Vita(需要 VITASDK 工具链)
armv7-unknown-linux-uclibceabi带有 uClibc 的 ARMv7-A Linux,软浮点
armv7-unknown-linux-uclibceabihf?带有 uClibc 的 ARMv7-A Linux,硬浮点
armv7-unknown-freebsdARMv7-A FreeBSD
armv7-unknown-netbsd-eabihfARMv7-A NetBSD 带硬件浮点运算
armv7-wrs-vxworks-eabihf?用于 VxWorks 的 ARMv7-A
armv7a-kmc-solid_asp3-eabi带 TOPPERS/ASP3 的 ARM SOLID
armv7a-kmc-solid_asp3-eabihf带 TOPPERS/ASP3 和硬件浮点运算的 ARM SOLID
armv7a-none-eabihf*裸机 ARMv7-A,带硬件浮点运算
armv7k-apple-watchosARMv7-A Apple WatchOS
armv7s-apple-iosARMv7-A Apple-A6 Apple iOS
armv8r-none-eabihf*裸机 ARMv8-R,带硬件浮点运算
avr-unknown-gnu-atmega328*AVR。需要 -Z build-std=core
bpfeb-unknown-none*BPF(大端)
bpfel-unknown-none*BPF(小端)
csky-unknown-linux-gnuabiv2C-SKY abiv2 Linux(小端)
csky-unknown-linux-gnuabiv2hfC-SKY abiv2 Linux,带硬件浮点运算(小端)
hexagon-unknown-none-elf*裸机 Hexagon(v60+,HVX)
hexagon-unknown-linux-musl带 musl 1.2.3 的 Hexagon Linux
i386-apple-ios32 位 x86 iOS 1
i586-pc-nto-qnx700*32 位 x86 QNX Neutrino 7.0 RTOS 1
i586-unknown-netbsd32 位 x86,限制为奔腾
i686-apple-darwin32 位 macOS(10.12+,Sierra+) 1
i686-unknown-haiku32 位 Haiku 1
i686-unknown-hurd-gnu32 位 GNU/Hurd 1
i686-unknown-netbsd带 SSE2 的 NetBSD/i386 1
i686-unknown-openbsd32 位 OpenBSD 1
i686-uwp-windows-gnu?1
i686-uwp-windows-msvc?1
i686-win7-windows-msvc32 位 Windows 7 支持 1
i686-wrs-vxworks?1
loongarch64-unknown-linux-musl?带 musl 1.2.3 的 LoongArch64 Linux(LP64D ABI)
m68k-unknown-linux-gnu?摩托罗拉 680x0 Linux
mips-unknown-linux-gnuMIPS Linux(内核 4.4,glibc 2.23)
mips-unknown-linux-musl带 musl 1.2.3 的 MIPS Linux
mips-unknown-linux-uclibc带 uClibc 的 MIPS Linux
mips64-openwrt-linux-musl?用于 OpenWrt Linux 的 MIPS64,musl 1.2.3
mips64-unknown-linux-gnuabi64MIPS64 Linux,N64 ABI(内核 4.4,glibc 2.23)
mips64-unknown-linux-muslabi64MIPS64 Linux,N64 ABI,musl 1.2.3
mips64el-unknown-linux-gnuabi64MIPS64(小端)Linux,N64 ABI(内核 4.4,glibc 2.23)
mips64el-unknown-linux-muslabi64MIPS64(小端)Linux,N64 ABI,musl 1.2.3
mipsel-unknown-linux-gnuMIPS(小端)Linux(内核 4.4,glibc 2.23)
mipsel-unknown-linux-muslMIPS(小端)Linux,带 musl 1.2.3
mipsel-unknown-netbsd32 位 MIPS(LE),需要 mips32 cpu 支持
mipsel-sony-psp*MIPS(LE)索尼 PlayStation Portable(PSP)
mipsel-sony-psx*MIPS(LE)索尼 PlayStation 1(PSX)
mipsel-unknown-linux-uclibcMIPS(LE)Linux,带 uClibc
mipsel-unknown-none*裸机 MIPS(LE)软浮点
mipsisa32r6-unknown-linux-gnu?32 位 MIPS Release 6 大端
mipsisa32r6el-unknown-linux-gnu?32 位 MIPS Release 6 小端
mipsisa64r6-unknown-linux-gnuabi64?64 位 MIPS Release 6 大端
mipsisa64r6el-unknown-linux-gnuabi6464 位 MIPS Release 6 小端
msp430-none-elf*16 位 MSP430 微控制器
powerpc-unknown-linux-gnuspePowerPC SPE Linux
powerpc-unknown-linux-musl?带 musl 1.2.3 的 PowerPC Linux
powerpc-unknown-netbsdNetBSD 32 位 powerpc 系统
powerpc-unknown-openbsd?
powerpc-wrs-vxworks-spe?
powerpc-wrs-vxworks?
powerpc64-unknown-freebsdPPC64 FreeBSD(ELFv1 和 ELFv2)
powerpc64le-unknown-freebsdPPC64LE FreeBSD
powerpc-unknown-freebsdPowerPC FreeBSD
powerpc64-unknown-linux-musl?64 位 PowerPC Linux,带 musl 1.2.3
powerpc64-wrs-vxworks?
powerpc64le-unknown-linux-musl?64 位 PowerPC Linux,带 musl 1.2.3,小端
powerpc64-unknown-openbsdOpenBSD/powerpc64
powerpc64-ibm-aix?64 位 AIX(7.2 及更高版本)
riscv32gc-unknown-linux-gnuRISC-V Linux(内核 5.4,glibc 2.33)
riscv32gc-unknown-linux-muslRISC-V Linux(内核 5.4,musl 1.2.3 + RISCV32 支持补丁)
riscv32im-risc0-zkvm-elf?RISC Zero 的零知识虚拟机(RV32IM ISA)
riscv32ima-unknown-none-elf*裸机 RISC-V(RV32IMA ISA)
riscv32imac-unknown-xous-elf?RISC-V Xous(RV32IMAC ISA)
riscv32imc-esp-espidfRISC-V ESP-IDF
riscv32imac-esp-espidfRISC-V ESP-IDF
riscv32imafc-esp-espidfRISC-V ESP-IDF
riscv64gc-unknown-hermitRISC-V Hermit
riscv64gc-unknown-freebsdRISC-V FreeBSD
riscv64gc-unknown-fuchsiaRISC-V Fuchsia
riscv64gc-unknown-linux-muslRISC-V Linux(内核 4.20,musl 1.2.3)
riscv64gc-unknown-netbsdRISC-V NetBSD
riscv64gc-unknown-openbsdOpenBSD/riscv64
riscv64-linux-androidRISC-V 64 位 Android
s390x-unknown-linux-muslS390x Linux(内核 3.2,musl 1.2.3)
sparc-unknown-linux-gnu32 位 SPARC Linux
sparc-unknown-none-elf*裸机 32 位 SPARC V7+
sparc64-unknown-netbsdNetBSD/sparc64
sparc64-unknown-openbsdOpenBSD/sparc64
thumbv4t-none-eabi*Thumb 模式裸机 ARMv4T
thumbv5te-none-eabi*Thumb 模式裸机 ARMv5TE
thumbv7a-pc-windows-msvc?
thumbv7a-uwp-windows-msvc
thumbv7neon-unknown-linux-musleabihf?Thumb2 模式 ARMv7-A Linux,带 NEON,musl 1.2.3
wasm32-wasip2WebAssembly
wasm64-unknown-unknown?WebAssembly
x86_64-apple-ios-macabix86_64 上的 Apple Catalyst
x86_64-apple-tvos?x86 64 位 tvOS
x86_64-apple-watchos-simx86 64 位 Apple WatchOS 模拟器
x86_64-pc-nto-qnx710x86 64 位 QNX Neutrino 7.1 RTOS
x86_64-unikraft-linux-musl带 musl 1.2.3 的 64 位 Unikraft
x86_64-unknown-dragonfly64 位 DragonFlyBSD
x86_64-unknown-haiku64 位 Haiku
x86_64-unknown-hermitx86_64 Hermit
x86_64-unknown-l4re-uclibc?
x86_64-unknown-openbsd64 位 OpenBSD
x86_64-uwp-windows-gnu
x86_64-uwp-windows-msvc
x86_64-win7-windows-msvc64 位 Windows 7 支持
x86_64-wrs-vxworks?
x86_64h-apple-darwin带最新一代英特尔(至少 Haswell)的 macOS