Rust 编译器找不到 'std' 的箱子

Rust compiler can't find crate for 'std'

我最近从 this site(Linux 64 位)下载并解压了 Rust 语言。

然后我使用下载中给定的脚本安装了 Rust install.sh:

root@kali:~# /root/rust-1.9.0-x86_64-unknown-linux-gnu/install.sh
install: uninstalling component 'rustc'
install: creating uninstall script at /usr/local/lib/rustlib/uninstall.sh
install: installing component 'rustc'
install: installing component 'rust-std-x86_64-unknown-linux-gnu'
install: installing component 'rust-docs'
install: installing component 'cargo'

    Rust is ready to roll.

我正在尝试安装一个装有货物的箱子,但我一直 运行 进入此错误:

root@kali:~# cargo install racer
    Updating registry `https://github.com/rust-lang/crates.io-index`
   Compiling winapi v0.2.7
   Compiling bitflags v0.5.0
error: can't find crate for `std` [E0463]
error: aborting due to previous error
Build failed, waiting for other jobs to finish...
error: can't find crate for `std` [E0463]
error: aborting due to previous error
error: failed to compile `racer v1.2.10`, intermediate artifacts can be found at `/root/target-install`

cargo install cargo-edit 失败,结果与上面相同,因此它不限于特定的包。

甚至放一个简单的程序:

fn main() {
    println!("Hello, world!");
}

在名为 hello.rs 和 运行 rustc hello.rs 的文件中无法编译;它给出了同样的错误:error: can't find crate for 'std' [E0463].

下载时带有一个名为 rust-std-x86_64-unknown-linux-gnu 的目录,我假设它是 std crate。在尝试定位 std crate 时如何指示 rustc 找到该目录?

以下将适用于最简单的编译。 假设您将 tar 文件提取到,比如

$HOME/rust-1.10.0-x86_64-unknown-linux-gnu

然后运行

arch=x86_64-unknown-linux-gnu
dl=$HOME/rust-1.10.0-$arch
$dl/rustc/bin/rustc -L $dl/rustc/lib \
    -L $dl/rust-std-$arch/lib/rustlib/$arch/lib \
    hello.rs

但我相信更好的方法是 运行 按照 Chris Morgan 的建议进行 rustup。

耦合更多点

  1. 您不应该以 root 身份编译代码。
  2. 您可能需要重新登录或 运行 bash -l 才能通过 rustup 设置环境。

(这里是铁锈新手)

对我来说 (Arch Linux) 删除系统的 Rust 解决了这个问题。

pacman -Rc rust

我认为用户安装的 Rust 和系统安装的 Rust 之间存在冲突。