Home

Awesome

rust-cross-toolchain

Toolchains for cross compilation and cross testing for Rust.

See also setup-cross-toolchain-action created based on this project.

Platform Support

Linux (GNU)

libcGCCClangC++testhost
glibc [1][1]host [2]✓ (libstdc++) [3]✓ (qemu) [4][1]

[1] See target list below for details<br> [2] Except for sparc-unknown-linux-gnu and loongarch64-unknown-linux-gnu<br> [3] Except for csky-unknown-linux-gnuabiv2* and loongarch64-unknown-linux-gnu<br> [4] Except for csky-unknown-linux-gnuabiv2*, powerpc-unknown-linux-gnuspe, and x86_64-unknown-linux-gnux32<br>

(Dockerfile)

Supported targets:

targetglibcGCChost
aarch64-unknown-linux-gnu2.27 (x86_64 host) / host (aarch64 host)7.4.0 (x86_64 host) / host (aarch64 host)x86_64 Linux (glibc 2.27+)
aarch64_be-unknown-linux-gnu (tier3)2.3110.2.1x86_64 Linux (glibc 2.27+)
arm-unknown-linux-gnueabi2.277.4.0x86_64/aarch64 Linux (glibc 2.27+)
arm-unknown-linux-gnueabihf2.249.4.0x86_64/aarch64 Linux (glibc 2.27+)
armeb-unknown-linux-gnueabi (tier3)2.257.5.0x86_64 Linux (glibc 2.27+)
armv5te-unknown-linux-gnueabi2.277.4.0x86_64/aarch64 Linux (glibc 2.27+)
armv7-unknown-linux-gnueabi2.277.4.0x86_64/aarch64 Linux (glibc 2.27+)
armv7-unknown-linux-gnueabihf2.277.4.0x86_64/aarch64 Linux (glibc 2.27+)
csky-unknown-linux-gnuabiv22.286.3.0x86_64/aarch64 Linux (glibc 2.27+)
csky-unknown-linux-gnuabiv2hf2.286.3.0x86_64/aarch64 Linux (glibc 2.27+)
i586-unknown-linux-gnu2.277.4.0x86_64/aarch64 Linux (glibc 2.27+)
i686-unknown-linux-gnu2.277.4.0x86_64/aarch64 Linux (glibc 2.27+)
loongarch64-unknown-linux-gnu2.4014.2.0x86_64 Linux (any libc)
mips-unknown-linux-gnu (tier3) [1]2.27 (x86_64 host) / 2.35 (aarch64 host)7.4.0 (x86_64 host) / 11.2.0 (aarch64 host)x86_64 Linux (glibc 2.27+) / aarch64 Linux (glibc 2.35+)
mips64-unknown-linux-gnuabi64 (tier3)2.27 (x86_64 host) / 2.35 (aarch64 host)7.4.0 (x86_64 host) / 11.2.0 (aarch64 host)x86_64 Linux (glibc 2.27+) / aarch64 Linux (glibc 2.35+)
mips64el-unknown-linux-gnuabi64 (tier3)2.27 (x86_64 host) / 2.35 (aarch64 host)7.4.0 (x86_64 host) / 11.2.0 (aarch64 host)x86_64 Linux (glibc 2.27+) / aarch64 Linux (glibc 2.35+)
mipsel-unknown-linux-gnu (tier3) [1]2.27 (x86_64 host) / 2.35 (aarch64 host)7.4.0 (x86_64 host) / 11.2.0 (aarch64 host)x86_64 Linux (glibc 2.27+) / aarch64 Linux (glibc 2.35+)
mipsisa32r6-unknown-linux-gnu (tier3)2.31 (x86_64 host) / 2.35 (aarch64 host)9.3.0 (x86_64 host) / 11.2.0 (aarch64 host)x86_64 Linux (glibc 2.31+) / aarch64 Linux (glibc 2.35+)
mipsisa32r6el-unknown-linux-gnu (tier3)2.31 (x86_64 host) / 2.35 (aarch64 host)9.3.0 (x86_64 host) / 11.2.0 (aarch64 host)x86_64 Linux (glibc 2.31+) / aarch64 Linux (glibc 2.35+)
mipsisa64r6-unknown-linux-gnuabi64 (tier3)2.31 (x86_64 host) / 2.35 (aarch64 host)9.3.0 (x86_64 host) / 11.2.0 (aarch64 host)x86_64 Linux (glibc 2.31+) / aarch64 Linux (glibc 2.35+)
mipsisa64r6el-unknown-linux-gnuabi64 (tier3)2.31 (x86_64 host) / 2.35 (aarch64 host)9.3.0 (x86_64 host) / 11.2.0 (aarch64 host)x86_64 Linux (glibc 2.31+) / aarch64 Linux (glibc 2.35+)
powerpc-unknown-linux-gnu2.277.4.0x86_64 Linux (glibc 2.27+)
powerpc-unknown-linux-gnuspe (tier3)2.277.4.0x86_64 Linux (glibc 2.27+)
powerpc64-unknown-linux-gnu2.277.4.0x86_64 Linux (glibc 2.27+)
powerpc64le-unknown-linux-gnu2.277.4.0x86_64/aarch64 Linux (glibc 2.27+)
riscv32gc-unknown-linux-gnu (tier3)2.3311.1.0x86_64 Linux (glibc 2.27+)
riscv64gc-unknown-linux-gnu2.277.4.0x86_64/aarch64 Linux (glibc 2.27+)
s390x-unknown-linux-gnu2.277.4.0x86_64/aarch64 Linux (glibc 2.27+)
sparc64-unknown-linux-gnu2.277.4.0x86_64 Linux (glibc 2.27+)
sparc-unknown-linux-gnu (tier3)2.277.4.0x86_64 Linux (glibc 2.27+)
thumbv7neon-unknown-linux-gnueabihf2.277.4.0x86_64/aarch64 Linux (glibc 2.27+)
x86_64-unknown-linux-gnuhost (x86_64 host) / 2.27 (aarch64 host)host (x86_64 host) / 7.4.0 (aarch64 host)x86_64/aarch64 Linux (glibc 2.27+)
x86_64-unknown-linux-gnux322.277.4.0x86_64/aarch64 Linux (glibc 2.27+)

[1] Since nightly-2023-07-05, mips{,el}-unknown-linux-gnu requires release mode for building std<br>

Linux (musl)

libcGCCClangC++testhost
musl 1.2.3 [6]9.4.0 [1][2]✓ (libstdc++) [1]✓ (qemu) [3] [4][5]

[1] 8.5.0 for powerpc-unknown-linux-muslspe, 13.2.0 for risc64gc-unknown-linux-musl, unavailable for hexagon-unknown-linux-musl<br> [2] 17.0.0-rc3 for hexagon-unknown-linux-musl, otherwise host<br> [3] hexagon-unknown-linux-musl requires release mode for building test<br> [4] Except for powerpc-unknown-linux-muslspe and riscv32gc-unknown-linux-musl<br> [5] See target list below for details<br> [6] 1.2.5 for riscv32

(Dockerfile)

Supported targets:

targethost
aarch64-unknown-linux-muslx86_64 Linux (any libc)
arm-unknown-linux-musleabix86_64 Linux (any libc)
arm-unknown-linux-musleabihfx86_64 Linux (any libc)
armv5te-unknown-linux-musleabix86_64 Linux (any libc)
armv7-unknown-linux-musleabix86_64 Linux (any libc)
armv7-unknown-linux-musleabihfx86_64 Linux (any libc)
hexagon-unknown-linux-musl (tier3)x86_64 Linux (glibc 2.27+)
i586-unknown-linux-muslx86_64 Linux (any libc)
i686-unknown-linux-muslx86_64 Linux (any libc)
mips-unknown-linux-musl (tier3)x86_64 Linux (any libc)
mips64-unknown-linux-muslabi64 (tier3)x86_64 Linux (any libc)
mips64el-unknown-linux-muslabi64 (tier3)x86_64 Linux (any libc)
mipsel-unknown-linux-musl (tier3)x86_64 Linux (any libc)
powerpc-unknown-linux-musl (tier3)x86_64 Linux (any libc)
powerpc-unknown-linux-muslspe (tier3)x86_64 Linux (any libc)
powerpc64le-unknown-linux-muslx86_64 Linux (any libc)
riscv32gc-unknown-linux-musl (tier3)x86_64 Linux (any libc)
riscv64gc-unknown-linux-muslx86_64 Linux (any libc)
s390x-unknown-linux-musl (tier3)x86_64 Linux (any libc)
thumbv7neon-unknown-linux-musleabihf (tier3)x86_64 Linux (any libc)
x86_64-unknown-linux-muslx86_64 Linux (any libc)

Linux (uClibc)

libcGCCClangC++testhost
uClibc-ng 1.0.3410.2.0host✓ (libstdc++)✓ (qemu)x86_64 Linux (glibc 2.17+)

(Dockerfile)

Supported targets:

[1] mips{,el}-unknown-linux-uclibc requires release mode for building std<br>

Android

libcGCCClangC++testhost
[1]N/A14.0.6? (libc++)✓ (qemu)x86_64 Linux (glibc 2.17+)

[1] See target list below for details<br>

(Dockerfile)

Supported targets:

targetAPI level
aarch64-linux-android21
arm-linux-androideabi21
armv7-linux-androideabi21
i686-linux-android21
thumbv7neon-linux-androideabi21
x86_64-linux-android21

FreeBSD

libcGCCClangC++testhost
freebsd [1]N/Ahost✓ (libc++)[1]

[1] See target list below for details<br>

(Dockerfile)

Supported targets:

targetversionhost
aarch64-unknown-freebsd (tier3)12.4 (default), 13.4, 14.1Linux (any arch, any libc)
i686-unknown-freebsd12.4 (default), 13.4, 14.1Linux (any arch, any libc)
powerpc-unknown-freebsd (tier3)13.4 (default), 14.1Linux (any arch, any libc)
powerpc64-unknown-freebsd (tier3)13.4 (default), 14.1Linux (any arch, any libc)
powerpc64le-unknown-freebsd (tier3)13.4 (default), 14.1Linux (any arch, any libc)
riscv64gc-unknown-freebsd (tier3)13.4 (default), 14.1x86_64 Linux (any libc)
x86_64-unknown-freebsd12.4 (default), 13.4, 14.1Linux (any arch, any libc)

NetBSD

libcGCCClangC++testhost
netbsd [1]7.5.0host✓ (libstdc++)x86_64 Linux (glibc 2.27+)

[1] See target list below for details<br>

(Dockerfile)

Supported targets:

targetversion
aarch64-unknown-netbsd (tier3)9.4 (default), 10.0
aarch64_be-unknown-netbsd (tier3)10.0
armv6-unknown-netbsd-eabihf (tier3)9.4 (default), 10.0
armv7-unknown-netbsd-eabihf (tier3)9.4 (default), 10.0
i586-unknown-netbsd (tier3)9.4 (default), 10.0
i686-unknown-netbsd (tier3)9.4 (default), 10.0
mipsel-unknown-netbsd (tier3)9.4 (default), 10.0
powerpc-unknown-netbsd (tier3)9.4 (default), 10.0
sparc64-unknown-netbsd (tier3)9.4 (default), 10.0
x86_64-unknown-netbsd9.4 (default), 10.0

OpenBSD

libcGCCClangC++testhost
openbsd [1]N/Ahost✓ (libc++) [2][1]

[1] See target list below for details<br> [2] Except for aarch64-unknown-openbsd and sparc64-unknown-openbsd<br>

(Dockerfile)

Supported targets:

targetversionhost
aarch64-unknown-openbsd (tier3)7.5 (default), 7.6Linux (any arch, any libc)
i686-unknown-openbsd (tier3)7.5 (default), 7.6Linux (any arch, any libc)
powerpc-unknown-openbsd (tier3)7.5 (default), 7.6Linux (any arch, any libc)
powerpc64-unknown-openbsd (tier3)7.5 (default), 7.6Linux (any arch, any libc)
riscv64gc-unknown-openbsd (tier3)7.5 (default), 7.6Linux (any arch, any libc)
sparc64-unknown-openbsd (tier3)7.5 (default), 7.6x86_64 Linux (any libc)
x86_64-unknown-openbsd (tier3)7.5 (default), 7.6Linux (any arch, any libc)

DragonFly BSD

libcGCCClangC++testhost
dragonfly 6.4.0N/Ahost (requires 13+)✓ (libstdc++)Linux (any arch, any libc)

(Dockerfile)

Supported targets:

Solaris

libcGCCClangC++testhost
solaris 2.108.5.0✓ (libstdc++)x86_64 Linux (any libc)

(Dockerfile)

Supported targets:

illumos

libcGCCClangC++testhost
solaris 2.108.5.0host✓ (libstdc++)x86_64 Linux (any libc)

(Dockerfile)

Supported targets:

Redox

libcGCCClangC++testhost
redox 0.8.013.2.0host✓ (libstdc++)x86_64 Linux (glibc 2.35+)

(Dockerfile)

<!-- TODO: I guess libc from https://static.redox-os.org/toolchain is for the latest version of redox, but I'm not 100% sure it is correct. https://gitlab.redox-os.org/redox-os/redox/-/releases -->

Supported targets:

WASI

libcGCCClangC++testhost
WASI SDK 25 (wasi-libc 574b88d)N/A19.1.5? (libc++)✓ (wasmtime)x86_64/aarch64 Linux (glibc 2.28+)
<!-- clang version and wasi-libc hash can be found here: https://github.com/WebAssembly/wasi-sdk/tree/wasi-sdk-25/src -->

(Dockerfile)

Supported targets:

Emscripten

libcGCCClangC++testhost
emscripten 3.1.68N/A✓ (libc++)✓ (node)x86_64/aarch64 Linux (glibc 2.27+)

(Dockerfile)

Supported targets:

Windows (MinGW)

libcGCCClangC++testhost
Mingw-w64 8.0.010.3.0host✓ (libstdc++)✓ (wine)[1]
<!-- Mingw-w64 version: https://packages.ubuntu.com/en/jammy/mingw-w64-common GCC version: https://packages.ubuntu.com/en/jammy/gcc-mingw-w64-base -->

[1] See target list below for details<br>

(Dockerfile)

Supported targets:

targethost
x86_64-pc-windows-gnux86_64/aarch64 Linux (glibc 2.35+)
i686-pc-windows-gnux86_64 Linux (glibc 2.35+)

Windows (LLVM MinGW)

libcGCCClangC++testhost
Mingw-w64 7c9cfe6N/A18.1.8✓ (libc++)✓ (wine)x86_64/aarch64 Linux (glibc 2.17+)
<!-- Mingw-w64 version: https://github.com/mstorsjo/llvm-mingw/blob/20240619/build-mingw-w64.sh#L21 Clang version: https://github.com/mstorsjo/llvm-mingw/releases/tag/20240619 -->

(Dockerfile)

Supported targets:

No-std

libcGCCClangC++runhost
newlib 4.1.0[1]✓ (libstdc++)[1][1]

[1] See target list below for details<br>

(Dockerfile)

Supported targets:

targetGCCrunhost
aarch64-unknown-none10.3.1✓ (qemu)x86_64/aarch64 Linux (glibc 2.27+)
aarch64-unknown-none-softfloat10.3.1✓ (qemu)x86_64/aarch64 Linux (glibc 2.27+)
armebv7r-none-eabi10.3.1✓ (qemu)x86_64/aarch64 Linux (glibc 2.27+)
armebv7r-none-eabihf10.3.1✓ (qemu)x86_64/aarch64 Linux (glibc 2.27+)
armv5te-none-eabi10.3.1✓ (qemu)x86_64/aarch64 Linux (glibc 2.27+)
armv7a-none-eabi10.3.1✓ (qemu)x86_64/aarch64 Linux (glibc 2.27+)
armv7a-none-eabihf10.3.1✓ (qemu)x86_64/aarch64 Linux (glibc 2.27+)
armv7r-none-eabi10.3.1✓ (qemu)x86_64/aarch64 Linux (glibc 2.27+)
armv7r-none-eabihf10.3.1✓ (qemu)x86_64/aarch64 Linux (glibc 2.27+)
riscv32i-unknown-none-elf11.1.0✓ (qemu)x86_64 Linux (glibc 2.27+)
riscv32im-unknown-none-elf (tier3)11.1.0✓ (qemu)x86_64 Linux (glibc 2.27+)
riscv32imac-unknown-none-elf11.1.0✓ (qemu)x86_64 Linux (glibc 2.27+)
riscv32imc-unknown-none-elf11.1.0✓ (qemu)x86_64 Linux (glibc 2.27+)
riscv64gc-unknown-none-elf11.1.0✓ (qemu)x86_64 Linux (glibc 2.27+)
riscv64imac-unknown-none-elf11.1.0✓ (qemu)x86_64 Linux (glibc 2.27+)
thumbv5te-none-eabi10.3.1✓ (qemu)x86_64/aarch64 Linux (glibc 2.27+)
thumbv6m-none-eabi10.3.1✓ (qemu)x86_64/aarch64 Linux (glibc 2.27+)
thumbv7em-none-eabi10.3.1✓ (qemu)x86_64/aarch64 Linux (glibc 2.27+)
thumbv7em-none-eabihf10.3.1✓ (qemu)x86_64/aarch64 Linux (glibc 2.27+)
thumbv7m-none-eabi10.3.1✓ (qemu)x86_64/aarch64 Linux (glibc 2.27+)
thumbv8m.base-none-eabi10.3.1✓ (qemu)x86_64/aarch64 Linux (glibc 2.27+)
thumbv8m.main-none-eabi10.3.1✓ (qemu)x86_64/aarch64 Linux (glibc 2.27+)
thumbv8m.main-none-eabihf10.3.1✓ (qemu)x86_64/aarch64 Linux (glibc 2.27+)