loongarch*-unknown-none*
层级:2
ELF 格式的独立/裸机 LoongArch64 二进制文件:固件、内核等。
目标 | 描述 |
---|---|
loongarch64-unknown-none | LoongArch 64 位,LP64D ABI(独立,硬浮点) |
loongarch64-unknown-none-softfloat | LoongArch 64 位,LP64S ABI(独立,软浮点) |
目标维护者
要求
此目标是交叉编译的。不支持 std
。没有默认分配器,但可以通过提供分配器来使用 alloc
。
这允许生成的代码在诸如内核之类的环境中运行,这些环境可能需要避免使用此类寄存器,或者可能对使用此类寄存器有特殊考虑(例如,保存和恢复它们以避免破坏使用相同寄存器的用户空间代码)。您可以通过 -C target-feature=
代码生成选项传递给 rustc,或通过 Rust 代码中的 #[target_feature]
机制来更改代码生成以使用额外的 CPU 功能。
默认情况下,使用此目标生成的代码应该在任何 loongarch
硬件上运行;启用额外的目标功能可能会提高此基线。
使用此目标生成的代码默认情况下将使用 small
代码模型。您可以使用 -C code-model=
选项传递给 rustc 来更改此设置。
在 loongarch64-unknown-none*
上,extern "C"
使用 标准调用约定。
此目标生成 ELF 格式的二进制文件。任何备用格式或二进制布局的特殊考虑都需要链接器选项或链接器脚本。
构建目标
您可以在 config.toml
中将目标添加到 target
列表中,以构建支持该目标的 Rust。
[build]
build-stage = 1
target = ["loongarch64-unknown-none"]
构建 Rust 程序
# target flag may be used with any cargo or rustc command
cargo build --target loongarch64-unknown-none
测试
由于 loongarch64-unknown-none*
支持各种不同的环境并且不支持 std
,因此此目标不支持运行 Rust 测试套件。
交叉编译工具链和 C 代码
如果您想将 C 代码与 Rust 一起编译(例如,对于具有 C 依赖项的 Rust 箱子),您将需要一个合适的 loongarch
工具链。
Rust 可能能够使用 loongarch64-unknown-linux-gnu-
工具链以及适当的独立标志来构建此工具链(取决于该工具链的假设,见下文),或者您可能希望使用单独的 loongarch64-unknown-none
工具链。
在某些使用 ELF 二进制文件的 loongarch
主机上,您可能能够使用主机 C 工具链,如果它没有引入关于主机环境的假设,这些假设与独立环境的预期不匹配。否则,您可能需要一个单独的工具链用于独立/裸机开发,就像从非 loongarch
平台交叉编译时一样。