首页 > 解决方案 > 如何查询 rustc 的主机三元组?

问题描述

使用 gcc 时,我可以通过运行gcc -dumpmachine. 在我当前的系统上,这给了我x86_64-linux-gnu.

我怎样才能稳定rustc打印我的主机三倍?(x86_64-unknown-linux-gnu在这种情况下)

rustc的文档似乎不包含除--printand之外的任何相关内容--version。似乎都没有产生宿主目标三倍。

澄清:到目前为止,关于 nightly 给出了两个答案,我想强调这个问题专门针对稳定 rustc的编译器。

标签: rustcross-compilingtriplet

解决方案


使用 Rust nightly,您可以打印“目标规范 JSON”:

$ rustc +nightly -Z unstable-options --print target-spec-json
{
  "arch": "x86_64",
  "cpu": "x86-64",
  "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128",
  "dynamic-linking": true,
  "env": "gnu",
  "executables": true,
  "has-elf-tls": true,
  "has-rpath": true,
  "is-builtin": true,
  "linker-flavor": "gcc",
  "linker-is-gnu": true,
  "llvm-target": "x86_64-unknown-linux-gnu",
  "max-atomic-width": 64,
  "os": "linux",
  "position-independent-executables": true,
  "pre-link-args": {
    "gcc": [
      "-Wl,--as-needed",
      "-Wl,-z,noexecstack",
      "-m64"
    ]
  },
  "relro-level": "full",
  "stack-probes": true,
  "target-c-int-width": "32",
  "target-endian": "little",
  "target-family": "unix",
  "target-pointer-width": "64",
  "vendor": "unknown"
}

要在命令行上从中解析目标三元组,您可以使用如下工具jq

$ rustc +nightly -Z unstable-options --print target-spec-json | jq -r '."llvm-target"'
x86_64-unknown-linux-gnu

这还不稳定(因此需要-Z unstable-options编译器选项),但它可能会在未来出现。该功能是在#38061中添加的。


推荐阅读