gpt4 book ai didi

rust - 插入式编译器替换找不到 std crate

转载 作者:行者123 更新时间:2023-11-29 07:50:50 26 4
gpt4 key购买 nike

我正在尝试制作 drop-in compiler replacement .这是我的源代码。

#![feature(rustc_private)]
#![feature(link_args)]

extern crate rustc_driver;

fn main() {
rustc_driver::set_sigpipe_handler();
rustc_driver::main();
}

这实际上是 rustc 源代码的精确副本。我使用环境变量构建、安装和导出了这个工具。

cargo install
export RUSTC=tool1 # `tool1` is name of binary

然后我尝试构建另一个项目 example1。这是 example1 的源代码。

fn main() {}

构建因错误而失败。

error[E0463]: can't find crate for `std`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0463`.
error: Could not compile `foo2`.

To learn more, run the command again with --verbose.

我确认 example1 使用普通 cargo 构建良好。只有使用 tool1 时它才会被破坏。 (export RUSTC=tool1) 如果我unset RUSTC,它会再次工作。

看来我犯了一些错误,但我想不通是什么。我怎样才能让它发挥作用?


这是我的工具信息。

rustc -V
rustc 1.28.0-nightly (a1d4a9503 2018-05-20)

cargo -V
cargo 1.28.0-nightly (f352115d5 2018-05-15)

Here's full example source code .

最佳答案

检查 tool1 共享库要求显示系统无法定位 Rust 共享库(我在 Linux 系统上,所以我使用 ldd):

> ldd /home/adona/.cargo/bin/tool1
linux-vdso.so.1 => (0x00007ffed5938000)
librustc_driver-aabc67f1ff8e0e97.so => not found
libstd-46fff00efefae8a8.so => not found
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa2d6f54000)
/lib64/ld-linux-x86-64.so.2 (0x00007fa2d7521000)

如果您想通过 cargo 构建,请使用 -L 选项设置 RUSTFLAGS,例如:

export RUSTFLAGS="-L $HOME/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib"

如果您想直接从命令行使用 tool1,您必须使用 ldconfig 命令或使用 LD_LIBRARY_PATH 环境变量配置链接器库路径:

export LD_LIBRARY_PATH=$HOME/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib:$LD_LIBRARY_PATH

关于rust - 插入式编译器替换找不到 std crate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50450909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com