【问题标题】:"a bin target must be available for 'cargo run'"“一个 bin 目标必须可用于 'cargo run'”
【发布时间】:2018-08-05 09:09:09
【问题描述】:

在 Intellij IDEA 2017 中构建一个新的 Rust“来自其他来源的项目”时,我无法通过其 UI 运行该项目。

C:/Users/sjsui/.cargo/bin/cargo.exe 运行错误:bin 目标必须是 可用于cargo run

进程以退出代码 101 结束

我注意到我的构建配置没有提供 --bin 目标,所以我放置了项目目标文件夹的路径;同样的结果。

C:/Users/sjsui/.cargo/bin/cargo.exe 运行 --bin C:\Users\sjsui\exercism\rust\hello-world\target\debug 错误:没有名为 C:\Users\sjsui\exercism\rust\hello-world\target\debug 的 bin 目标

我尝试通过 Cargo 命令行界面创建一个新的 Rust 项目,运行时收到此错误:

错误:无法执行链接器link.exe:系统找不到指定的文件。 (操作系统错误 2) 注意:msvc 目标取决于 msvc 链接器,但 link.exe 是 没找到

注意:请确保安装了 VS 2013 或 VS 2015 Visual C++ 选项

显然我必须安装 Visual C++ 构建工具 2017 并且正在安装中。这些错误是相关的还是不同的问题?

【问题讨论】:

    标签: intellij-idea rust


    【解决方案1】:

    默认情况下,Cargo 将文件src/main.rs 视为包的主要二进制目标。如果此文件不存在,并且Cargo.toml 中没有定义其他二进制目标,则会出现此错误。

    According to the documentation,当您在 IntelliJ IDEA 中创建 Rust 项目时,您可以选择使用二进制(应用程序)模板。这应该给你一个src/main.rs 而不是src/lib.rs(这是库目标的默认根文件)。在命令行使用 Cargo,也可以使用cargo new hello创建应用包。

    Cargo 默认使用--bin 来制作二进制程序。要创建一个库,我们将传递 --lib

    当您在cargo run 命令上使用--bin 时,参数引用Cargo.toml 中的[[bin]] 部分之一,或遵循模式src/bin/*.rs 的文件(参数替换*)如果Cargo.toml 中没有 [[bin]] 部分。例如,cargo run --bin foo 将编译并运行src/bin/foo.rs[[bin]] 部分,name = "foo"Cargo.toml 中。

    【讨论】:

    • 我的错误是忘记了该项目是通过从源导入创建的。 (文件>新>其他来源的项目)。这个来源只有lib.rs;正如你所说的图书馆。
    【解决方案2】:

    除了弗朗西斯·加涅(Francis Gagne)的出色回答。如果有人想知道如何解决此错误:

    error: could not exec the linker link.exe: 系统找不到 指定的文件。 (操作系统错误 2)注意:msvc 目标取决于 msvc 链接器,但未找到 link.exe

    注意:请确保安装了 VS 2013 或 VS 2015 Visual C++ 选项

    然后关注this guide over at github.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      • 2016-03-21
      • 2021-09-03
      相关资源
      最近更新 更多