csky-unknown-linux-gnuabiv2

级别: 3

此目标支持使用 abi v2 和 glibcC-SKY CPU。

目标标准库主机注释
csky-unknown-linux-gnuabiv2C-SKY abiv2 Linux (小端)
csky-unknown-linux-gnuabiv2hfC-SKY abiv2 Linux, 硬浮点 (小端)

参考

其他链接

  • https://c-sky.github.io/
  • https://gitlab.com/c-sky/

目标维护者

要求

构建目标

获取 C 工具链

针对此目标编译 Rust 已在 x86_64 Linux 主机上测试过。其他主机类型尚未经过测试,但如果您能找到适合它们的交叉编译工具链,也可能可以工作。

如果您还没有合适的工具链,可以从这里下载,并将其解压到一个目录中。

配置 Rust

可以通过为 rustc 构建启用此目标来构建它,方法是将以下内容放置在 config.toml

[build]
target = ["x86_64-unknown-linux-gnu", "csky-unknown-linux-gnuabiv2", "csky-unknown-linux-gnuabiv2hf"]
stage = 2

[target.csky-unknown-linux-gnuabiv2]
# ADJUST THIS PATH TO POINT AT YOUR TOOLCHAIN
cc = "${TOOLCHAIN_PATH}/bin/csky-linux-gnuabiv2-gcc"

[target.csky-unknown-linux-gnuabiv2hf]
# ADJUST THIS PATH TO POINT AT YOUR TOOLCHAIN
cc = "${TOOLCHAIN_PATH}/bin/csky-linux-gnuabiv2-gcc"

构建

# in rust dir
./x.py build --stage 2

构建和运行 Rust 程序

要在 x86_64 系统上测试交叉编译的二进制文件,您可以使用 qemu-cskyv2。这避免了通过动态二进制转换和动态系统调用转换来使用完整的模拟 ARM 系统。它允许您直接在您的 x86_64 内核上运行 CSKY 程序。这非常方便!

使用方法

  • 安装 qemu-cskyv2 (如果您还没有 qemu,您可以从这里下载,并将其解压到一个目录中。)
  • 通过以下方式链接您构建的工具链
    • rustup toolchain link stage2 ${RUST}/build/x86_64-unknown-linux-gnu/stage2
  • 创建一个测试程序
cargo new hello_world
cd hello_world
  • 构建和运行
CARGO_TARGET_CSKY_UNKNOWN_LINUX_GNUABIV2_RUNNER=${QEMU_PATH}/bin/qemu-cskyv2 -L ${TOOLCHAIN_PATH}/csky-linux-gnuabiv2/libc \
CARGO_TARGET_CSKY_UNKNOWN_LINUX_GNUABIV2_LINKER=${TOOLCHAIN_PATH}/bin/csky-linux-gnuabiv2-gcc \
RUSTFLAGS="-C target-feature=+crt-static" \
cargo +stage2 run --target csky-unknown-linux-gnuabiv2

注意:动态链接的程序可能无法被 qemu-cskyv2 运行,但可以在目标机器上运行。