loongarch*-unknown-linux-*
层级:2
LoongArch 是龙芯中科有限公司开发的一种新的 RISC 指令集架构。
目标名称遵循以下格式:<machine>-<vendor>-<os><fabi_suffix>
,其中 <machine>
指定 CPU 系列/型号,<vendor>
指定供应商,<os>
指定操作系统名称。虽然整数基 ABI 由机器字段隐含,但浮点基 ABI 类型使用字符串后缀 <fabi-suffix>
编码到规范的 os 字段中。
<fabi-suffix> | 描述 |
---|---|
f64 | 基 ABI 使用 64 位 FPR 进行参数传递。(lp64d) |
f32 | 基 ABI 使用 32 位 FPR 进行参数传递。(lp64f) |
sf | 基 ABI 不使用 FPR 进行参数传递。(lp64s) |
ABI 类型(基 ABI/ABI 扩展) | C 库 | 内核 | 目标元组 |
---|---|---|---|
lp64d/base | glibc | linux | loongarch64-unknown-linux-gnu |
lp64f/base | glibc | linux | loongarch64-unknown-linux-gnuf32 |
lp64s/base | glibc | linux | loongarch64-unknown-linux-gnusf |
lp64d/base | musl libc | linux | loongarch64-unknown-linux-musl |
lp64f/base | musl libc | linux | loongarch64-unknown-linux-muslf32 |
lp64s/base | musl libc | linux | loongarch64-unknown-linux-muslsf |
目标维护者
- WANG Rui
[email protected]
- ZHAI Xiang
[email protected]
- ZHAI Xiaojuan
[email protected]
- WANG Xuerui
[email protected]
要求
此目标是交叉编译的。需要一个用于 LoongArch 目标的 GNU 工具链。它可以从 https://github.com/loongson/build-tools/releases 下载,或者从 GCC(12.1.0 或更高版本)和 Binutils(2.40 或更高版本)的源代码构建。
构建目标
可以通过为 rustc
构建启用目标来构建目标。
[build]
target = ["loongarch64-unknown-linux-gnu"]
确保 loongarch64-unknown-linux-gnu-gcc
可以从 $PATH
中指定的目录中搜索到。或者,您可以使用 GNU LoongArch 工具链,方法是在 config.toml
中添加以下内容
[target.loongarch64-unknown-linux-gnu]
# ADJUST THIS PATH TO POINT AT YOUR TOOLCHAIN
cc = "/TOOLCHAIN_PATH/bin/loongarch64-unknown-linux-gnu-gcc"
cxx = "/TOOLCHAIN_PATH/bin/loongarch64-unknown-linux-gnu-g++"
ar = "/TOOLCHAIN_PATH/bin/loongarch64-unknown-linux-gnu-ar"
ranlib = "/TOOLCHAIN_PATH/bin/loongarch64-unknown-linux-gnu-ranlib"
linker = "/TOOLCHAIN_PATH/bin/loongarch64-unknown-linux-gnu-gcc"
交叉编译
此目标可以在 x86_64-unknown-linux-gnu
主机上交叉编译。在其他主机上进行交叉编译可能有效,但尚未经过测试。
测试
要在构建系统上测试交叉编译的二进制文件,请安装支持 LoongArch 架构的 qemu 二进制文件,并执行以下命令。
CC_loongarch64_unknown_linux_gnu=/TOOLCHAIN_PATH/bin/loongarch64-unknown-linux-gnu-gcc \
CXX_loongarch64_unknown_linux_gnu=/TOOLCHAIN_PATH/bin/loongarch64-unknown-linux-gnu-g++ \
AR_loongarch64_unknown_linux_gnu=/TOOLCHAIN_PATH/bin/loongarch64-unknown-linux-gnu-gcc-ar \
CARGO_TARGET_LOONGARCH64_UNKNOWN_LINUX_GNUN_LINKER=/TOOLCHAIN_PATH/bin/loongarch64-unknown-linux-gnu-gcc \
# SET TARGET SYSTEM LIBRARY PATH
CARGO_TARGET_LOONGARCH64_UNKNOWN_LINUX_GNUN_RUNNER="qemu-loongarch64 -L /TOOLCHAIN_PATH/TARGET_LIBRARY_PATH" \
cargo run --target loongarch64-unknown-linux-gnu --release
已在 x86 架构上测试,其他架构尚未测试。
构建 Rust 程序
Rust 尚未为此目标提供预编译的工件。要为此目标编译,您需要启用目标构建 Rust(请参阅上面的“构建目标”),或者使用 build-std
或类似方法构建自己的 std
副本。
如果 rustc
支持该目标并且库工件可用,那么可以为此目标构建 Rust 静态库
$ rustc --target loongarch64-unknown-linux-gnu your-code.rs --crate-type staticlib
$ ls libyour_code.a
在 Rust Nightly 上,即使没有库工件可用,也可以构建
cargo build -Z build-std --target loongarch64-unknown-linux-gnu