riscv64gc-unknown-linux-gnu

层级: 2 (带有主机工具)

RISC-V 目标使用带有 G 扩展集合以及 C 扩展的 RV64I 基本指令集。

目标维护者

要求

此目标需要

  • Linux Kernel 4.20 或更高版本
  • glibc 2.17 或更高版本

构建目标

这些目标通过 rustup 分发,在其他方面不需要特殊配置。

如果由于某些原因您需要构建自己的 Rust,则可以在 config.toml 中启用这些目标。例如

[build]
target = ["riscv64gc-unknown-linux-gnu"]

构建 Rust 程序

在 RISC-V 主机上,riscv64gc-unknown-linux-gnu 目标应自动安装并默认使用。

在非 RISC-V 主机上,添加目标

rustup target add riscv64gc-unknown-linux-gnu

然后使用以下命令交叉编译 crate

cargo build --target riscv64gc-unknown-linux-gnu

测试

对于测试和运行目标,没有特殊要求。 为了在主机上测试交叉构建,请参阅下面的“交叉编译工具链和 C 代码”部分。

交叉编译工具链和 C 代码

可以从 riscv-gnu-toolchain 仓库为 Windows/Mac/Linux 获取 RISC-V 工具链。 二进制文件可通过 embecosm 获得,也可能从您的操作系统软件包管理器获得。

在 Ubuntu 上,可以使用以下命令安装 RISC-V 工具链

apt install gcc-riscv64-linux-gnu g++-riscv64-linux-gnu libc6-dev-riscv64-cross

根据您的系统,您可能需要配置目标以使用 GNU GCC 链接器。 要使用它,请将以下内容添加到您的 .cargo/config.toml

[target.riscv64gc-unknown-linux-gnu]
linker = "riscv64-linux-gnu-gcc"

如果您的 riscv64-linux-gnu-* 工具链不在您的 PATH 中,您可能需要配置其他设置

[target.riscv64gc-unknown-linux-gnu]
# Adjust the paths to point at your toolchain
cc = "/TOOLCHAIN_PATH/bin/riscv64-linux-gnu-gcc"
cxx = "/TOOLCHAIN_PATH/bin/riscv64-linux-gnu-g++"
ar = "/TOOLCHAIN_PATH/bin/riscv64-linux-gnu-ar"
ranlib = "/TOOLCHAIN_PATH/bin/riscv64-linux-gnu-ranlib"
linker = "/TOOLCHAIN_PATH/bin/riscv64-linux-gnu-gcc"

要在非 RISC-V 主机上测试交叉编译的二进制文件,您可以使用 qemu。 在 Ubuntu 上,可以使用以下命令获取 RISC-V 模拟器

apt install qemu-system-riscv64

然后,在 .cargo/config.toml 中设置 runner

[target.riscv64gc-unknown-linux-gnu]
runner = "qemu-riscv64-static -L /usr/riscv64-linux-gnu -cpu rv64"

在 Mac 和 Linux 上,也可以使用 lima 来模拟 RISC-V,其方式类似于 WSL2 在 Windows 上的工作方式

limactl start template://riscv
limactl shell riscv

使用 Docker (使用 BuildKit)riscv64/ubuntu 镜像可用于构建或运行 riscv64gc-unknown-linux-gnu 二进制文件。

docker run --platform linux/riscv64 -ti --rm --mount "type=bind,src=$(pwd),dst=/checkout" riscv64/ubuntu bash