无法在 Windows 上编译 Rust hello world:找不到链接器 link.exe

Unable to compile Rust hello world on Windows: linker link.exe not found

我已经从 Rust installation page 在 windows 上安装了 Rust。安装后,我尝试了 运行 "hello world" 程序,但出现以下错误。

>cargo run

错误

Compiling helloworld v0.1.0 (C:\Users\DELL\helloworld)

error: linker `link.exe` not found
note: The system cannot find the file specified. (os error 2)
note: the msvc targets depend on the msvc linker but `link.exe` was not found
note: please ensure that VS 2013, VS 2015 or VS 2017 was installed with the Visual C++ option
error: aborting due to previous error
error: Could not compile `helloworld`.

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

代码:

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

我下载并安装了 Build Tools for Visual Studio 2019。在安装过程中,我选择了 C++ 工具。它下载了将近 5GB 的数据。安装后我重新启动机器并编译代码工作正常:

> cargo run
Compiling helloworld v0.1.0 (C:\Users\DELL\helloworld)
Finished dev [unoptimized + debuginfo] target(s) in 12.05s
  Running `target\debug\helloworld.exe`
Hello, world!

我遇到了同样的问题,并且发现它甚至在安装构建工具后仍然存在。我几乎是偶然意识到我在 "Developer Command Prompt for Visual Studio " 中 运行 所有的货物命令。 运行 在一个简单的 cmd shell 运行 中执行相同的命令没有任何问题。

对我有用的方法:运行 直接使用命令提示符而不使用 Visual Studio 创建的快捷方式。

可能的原因:Visual Studio 命令提示符运行 bat 文件,例如VsDevCmd.bat 在启动 shell(加载 VS 相关环境变量等)之前,可能还有该文件中的命令之一搞砸了 cargo 用于访问链接器的路径。

如果有人真的想知道,可以进一步挖掘以找到导致问题的确切行。

尝试在 Visual Studio 之外使用 Powershell。

然后 cargo 运行 在 src 的父文件夹中。

你也可以试试:rustc

祝你好运。

案例一:使用C++win编译器,修复需要重装VS编译工具C++ 从 Microsoft 网站下载 Visual Studio 2019 构建工具: https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16

下载后,在安装构建工具时,请确保安装所需的组件:

  1. C++ 构建工具

这将下载所需的文件。成功安装所有内容后,重新启动并重新运行你的 rust 程序,它将成功编译。

案例2:这个错误可能来自于你使用GCC编译,修复它(假设你已经有MinGW):

cmd 中的磁带:

  1. rustup uninstall toolchain stable-x86_64-pc-windows-msvc
  2. rustup toolchain install stable-x86_64-pc-windows-gnu (or download rustup-init for the platform of your choice at https://forge.rust-lang.org/infra/other-installation-methods.html)
  3. rustup default stable-x86_64-pc-windows-gnu

案例3:你不想下载Visual studio带构建工具的,直接用g++ gcc开发包安装MinGw,然后运行案例2

我遇到了类似的问题“error: linking with link.exe failed: exit code: 1

为了解决它,我做到了

rustup toolchain install stable-x86_64-pc-windows-gnu

然后

rustup default stable-x86_64-pc-windows-gnu

cargo build
  Compiling hello v0.1.0 (C:\Users\leke\dev\rust\hello)
    Finished dev [unoptimized + debuginfo] target(s) in 1.66s

错误消息非常不清楚,因为 运行 rust 代码不需要安装 Vistual Studio。 “Visual C++ 选项”到底是什么意思? “VS 2013、VS 2015 或 VS 2017”也是错误的 - 无需安装这些特定版本的完整 Visual Studio。

要执行 'cargo run',您需要从 Visual Studio 的构建工具安装 C++ 构建工具。 2019版就好了。下载 link: https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16#

重要的是 select 不仅是安装过程中的默认 'included' C++ 工具,还有三个 'optional' C++ building tools:MSVC(...),Windows 10 SDK , Windows.

的 C++ CMake 工具

我的系统变量中有一些来自旧 Visual Studio 安装的变量。删除那些解决了问题。

VCHOME            C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC
VCINSTALLDIR      C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC
VS140COMNTOOLS    C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common Tool...
vsinstalldir      C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC

首先,下载Microsoft C++ Build Tools并安装。 然后,安装 rustup-init.exe。 安装rust成功后不要删除第一个

C:\Program Files (x86)\Microsoft Visual Studio19\BuildTools\VC\Tools\MSVC.29.30133\bin\Hostx64\x64 添加到 PATH 变量完成了技巧

如果上述解决方案仍然不适合您(这是 2021 年),Rust 使用 msvcgnu 编译器,因此您可以始终切换到 gnu 编译器:

$ rustup default stable-x86_64-pc-windows-gnu

好的!

这正是我所做的。转到 https://visualstudio.microsoft.com/visual-cpp-build-tools/,它将下载 Visual Studio 安装程序。

运行 以管理员身份,然后确保下载屏幕截图中下面列出的所有三个东西,版本无关紧要,只需尝试获取最新版本即可。

点击安装。重新启动计算机。不客气。

只需安装 Microsoft c++ Build Tools 即可。

这里是 link

https://visualstudio.microsoft.com/visual-cpp-build-tools/