如何为特定的rustup工具链安装Rust目标?

时间:2018-11-08 14:46:51

标签: rust cross-compiling

我在64位Windows计算机上使用rustccargo来编译32位应用程序。使用稳定的工具链时,此功能可以很好地工作,但是当我尝试使用Beta工具链时,它会失败。

已使用rustup install beta成功安装了beta工具链。在项目文件夹中,有一个.cargo/config文件,其中包含以下几行:

[build]
target = "i686-pc-windows-msvc"

[target.i686-pc-windows-msvc]
rustflags = ["-Ctarget-feature=+crt-static"]

运行cargo +beta build时发生以下错误:

error[E0463]: can't find crate for `core`
  |
  = note: the `i686-pc-windows-msvc` target may not be installed

我尝试运行rustup target add i686-pc-windows-msvc来解决此问题,但没有帮助; rustup target list甚至显示为“已安装”。可能此命令只会添加稳定目标,而我找不到如何指定beta工具链。

如何为Beta工具链添加另一个(非默认)目标?

1 个答案:

答案 0 :(得分:5)

阅读有关rustup target add的帮助:

$ rustup target add --help
rustup-target-add
Add a target to a Rust toolchain

USAGE:
    rustup target add [OPTIONS] <target>...

FLAGS:
    -h, --help    Prints help information

OPTIONS:
        --toolchain <toolchain>    Toolchain name, such as 'stable', 'nightly', or '1.8.0'. For more information see
                                   `rustup help toolchain`

因此,您想要:

rustup target add i686-pc-windows-msvc --toolchain beta

我相信它将默认将目标添加到“当前”工具链中,因此您也可以这样做:

rustup override set beta               # in your project directory
rustup target add i686-pc-windows-msvc #
cargo build                            # no more +beta

  

rustup target list甚至显示为“已安装”

阅读有关rustup target list的帮助:

$ rustup target list --help
rustup-target-list
List installed and available targets

USAGE:
    rustup target list [OPTIONS]

FLAGS:
    -h, --help    Prints help information

OPTIONS:
        --toolchain <toolchain>    Toolchain name, such as 'stable', 'nightly', or '1.8.0'. For more information see
                                   `rustup help toolchain`

因此,您想要:

rustup target list --toolchain beta