hexagon-unknown-linux-musl
层级:3
针对 Hexagon DSP 架构的交叉编译 Linux 用户模式应用程序的目标。
目标 | 描述 |
---|---|
hexagon-unknown-linux-musl | Hexagon 32 位 Linux |
目标维护者
要求
该目标是交叉编译的。此目标支持 std
。默认情况下,使用此目标生成的代码应在 Hexagon DSP 硬件上运行。
-Ctarget-cpu=hexagonv73
添加对 Hexagon V73 之前定义的指令的支持。
可以使用 QEMU 用户模拟运行二进制文件。在基于 Debian 的系统上,安装 qemu-user-static
包应该足以运行简单的静态二进制文件。
# apt install qemu-user-static
# qemu-hexagon-static ./hello
为了使用 Rust 构建 Linux 程序,您需要一个能够针对 hexagon 的链接器。您可以使用来自 仅使用公共开源存储库的 hexagon 工具链 的 clang
/lld
。
该工具链中还包含在创建动态链接可执行文件时可使用的 C 库。
# /opt/clang+llvm-18.1.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/qemu-hexagon -L /opt/clang+llvm-18.1.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/target/hexagon-unknown-linux-musl/usr/ ./hello
构建目标
由于它是 3 级,因此 Rust 尚未为此目标提供预编译的工件。
因此,您可以通过将其添加到 config.toml
中的目标列表来构建支持该目标的 Rust,下面显示了一个示例配置。
[build]
target = [ "hexagon-unknown-linux-musl"]
[target.hexagon-unknown-linux-musl]
cc = "hexagon-unknown-linux-musl-clang"
cxx = "hexagon-unknown-linux-musl-clang++"
linker = "hexagon-unknown-linux-musl-clang"
ar = "hexagon-unknown-linux-musl-ar"
ranlib = "hexagon-unknown-linux-musl-ranlib"
musl-root = "/opt/clang+llvm-18.1.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/target/hexagon-unknown-linux-musl/usr"
llvm-libunwind = 'in-tree'
qemu-rootfs = "/opt/clang+llvm-18.1.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/target/hexagon-unknown-linux-musl/usr"
测试
目前不支持为此目标运行 rustc 测试套件。
构建 Rust 程序
从 https://github.com/quic/toolchain_for_hexagon/releases 下载并安装 hexagon 开源工具链
以下 .cargo/config
需要在任何项目目录中构建用于 Hexagon Linux 目标
[build]
target = "hexagon-unknown-linux-musl"
[target.hexagon-unknown-linux-musl]
linker = "hexagon-unknown-linux-musl-clang"
ar = "hexagon-unknown-linux-musl-ar"
runner = "qemu-hexagon -L /opt/clang+llvm-18.1.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/target/hexagon-unknown-linux-musl/usr"
编辑 .cargo/config
中的 "runner" 以指向工具链的 C 库的路径。
...
runner = "qemu-hexagon -L /path/to/my/inst/clang+llvm-18.1.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/target/hexagon-unknown-linux-musl/usr"
...
在您的 PATH
中使用 qemu-hexagon
构建/运行您的 Rust 程序
export PATH=/path/to/my/inst/clang+llvm-18.1.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/:$PATH
cargo run -Zbuild-std -Zbuild-std-features=llvm-libunwind