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

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

提问人:Zobia Kanwal 提问时间:4/10/2019 最后编辑:Zobia Kanwal 更新时间:10/4/2023 访问量:149770

问:

我已经从 Rust 安装页面在 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!");
}
编译器错误 安装 rust 链接器错误 构建工具

评论

5赞 hellow 4/10/2019
错误消息确切地说明了要执行的操作:“注意:请确保使用 Visual C++ 选项安装了 VS 2013、VS 2015 或 VS 2017”
9赞 Zobia Kanwal 4/10/2019
是的,认为它可能对其他人有用,因此分享了这个问题及其答案。
2赞 Merk 9/30/2021
@hellow并不完全“完全”,这就是整个问题......Visual Studio 安装程序大约有 30 个选项,安装它们可能需要 TB 的下载量。下面的 Filiphagan 有帮助地提到了必要的。
0赞 hellow 9/30/2021
@Merk“[...]与Visual C++选项一起安装“我的意思是...它不会告诉你要安装所有东西,是吗?
1赞 Merk 10/7/2021
@hellow“确切地”表明“足够的信息来从列表中选择项目”,但考虑到列表中有 Visual C++ 和 VS 20xx 的(多 Gb)选项的数量,情况并非如此,正如下面的多个答案所证明的那样。对这个问题的有益评论将有助于区分它们。

答:

134赞 Zobia Kanwal 4/10/2019 #1

我下载并安装了 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!

评论

23赞 argenkiwi 5/16/2020
我们是否需要选中所有默认复选框?否则,我们可以安装的最小依赖集是什么来使 Rust 工作?
28赞 Fasani 7/1/2020
@argenkiwi,我能够仅使用“MSVC v142 - VS 2019 C++ x64/x86 构建工具”和“Windows 10 SDK”即可使其工作。
0赞 lousycoder 7/25/2020
难道没有其他选择吗?
12赞 derekdreery 11/16/2020
我只尝试了 C++ 构建工具,但它不起作用 - 您还需要 Windows 10 SDK。
0赞 Yuchen 6/14/2022
使用 VS 构建工具安装 C++ 工具时,我选中了所有复选框。虽然未选中 Windows 10/11 SDK 框,但我注意到它在安装过程中已安装。在我重新启动笔记本电脑后,rust 代码对我有用。
2赞 Late Nighter 11/15/2019 #2

我遇到了同样的问题,发现即使在安装构建工具后也存在。我几乎偶然地意识到,我在“Visual Studio 开发人员命令提示”中运行了我所有的 cargo 命令。在简单的 cmd shell 中运行相同的命令没有任何问题。

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

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

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

评论

0赞 passing_through 6/12/2020
多谢! 从命令行(而不是 VS 的命令提示符)在我的情况下有所帮助。cargo run
-3赞 Fausto Carias 5/18/2020 #3

请尝试在 Visual Studio 外部使用 Powershell。

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

您也可以尝试:rustc

祝你好运。

63赞 ocanis 7/9/2020 #4

案例1:使用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(或在 https://forge.rust-lang.org/infra/other-installation-methods.html 下载您选择的平台的 rustup-init)
  3. rustup default stable-x86_64-pc-windows-gnu

案例 3:您不想使用生成工具下载 Visual Studio,只需使用 g++ GCC 开发包安装 MinGw,然后运行案例 2

评论

0赞 Venkataramana Madugula 7/25/2021
rustup 卸载工具链 stable-x86_64-pc-windows-msvc 此命令抛出访问被拒绝错误,不确定有多少人面临此问题。虽然这个答案非常详细,但我投票支持下面的答案,因为它更像是快速修复。
0赞 Alex. S. 9/8/2021
谢谢!这解决了问题。我不知何故误解了 rustup 对 VC++ 构建工具需求的多个警告。好像是可选的,或者什么呵呵
0赞 Trần Thanh Phong 2/26/2022
我做了案例 1 和 2,这对我有用。非常感谢!
126赞 the artist 9/29/2020 #5

我有一个类似的问题”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

评论

14赞 Luis Ayuso 11/14/2020
这不是一个解决方案,而是一种解决方法,重要的是要考虑到你在这样做时会改变工具链,并且会有副作用。
0赞 Ahmed 7/14/2021
对于 Windows 32 位系统,您将需要改用"stable-i686-pc-windows-gnu"
5赞 Hashim Aziz 12/16/2021
@LuisAyuso 如果您列出您正在考虑的副作用,您的评论会有所帮助。
7赞 Luis Ayuso 1/12/2022
@HashimAziz 所提出的解决方案将工具链从 MSVC 更改为 GNU。它不能解决原始问题(可能是 MSVC 安装错误),而是使用完全不同的编译器和链接器。兼容性、功能和性能可能不同。为了更好地理解这种差异,请查找将 Windows 开发从 MSVC 更改为 GNU 的含义。
1赞 Marco Lackovic 10/10/2022
这不能用于 Rocket,因为它需要 Rust 的夜间版本,并且运行会覆盖上述命令。rustup default nightly
18赞 filiphagan 3/21/2021 #6

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

若要执行“cargo run”,需要从 Visual Studio 的生成工具安装 C++ 生成工具。版本 2019 就好了。下载链接:https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16#

在安装过程中,不仅要选择默认的“包含”C++ 工具,还要选择三个“可选”的 C++ 生成工具:MSVC(...)、Windows 10 SDK、适用于 Windows 的 C++ CMake 工具。

评论

0赞 kmdreko 3/21/2021
这个答案与目前接受的答案有何不同?链接是相同的,注释提供了所需的最小安装选项。
5赞 filiphagan 3/21/2021
@kmdreko答案不是解决问题,因为那里没有提到 MSVC 和 Windows 10 SDK 等其他要求
-3赞 Ovidiu 5/17/2021 #7

我的系统变量中有一些来自旧 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
-7赞 Yousef McGee 6/30/2021 #8

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

评论

4赞 Shepmaster 6/30/2021
除了公认的答案之外,目前尚不清楚这提供了什么,该答案已经解释了安装构建工具。
-1赞 FunctorPrototype 9/22/2021 #9

添加到PATH变量就完成了诀窍C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64

评论

0赞 jaques-sam 6/22/2023
实际上,这对我 2 有用,我发现这是唯一的方法:-O我没有得到反对票!不幸的是,这是找到链接器的方法,因为每次更新 VS 时,您都必须更改变量......
0赞 jaques-sam 6/22/2023
最有可能的是,这仅在您不想重新启动但不确定的情况下才有效;-)
20赞 Adminixtrator 10/18/2021 #10

如果上述解决方案仍然不适合你(这是 2021 年),Rust 使用 msvc 和 gnu 编译器,所以你可以随时切换到 gnu 编译器:

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

评论

2赞 Rat 6/19/2022
我的计算机磁盘空间严重不足(即我无法安装C++构建工具,因为它是 6 GB),您刚刚救了我,谢谢善良的陌生人:)
29赞 Rahul Bali 10/31/2021 #11

好!

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

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

required list

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

评论

3赞 holzkohlengrill 1/31/2022
在选项卡中,单击,您将在右窗格中看到上面的列表。WorkloadsDesktop development with C++
0赞 Gagan Suie 9/6/2022
@holzkohlengrill我可以确认您的解决方案也适用于 VS 2022。使用 C++ 进行桌面开发实际上应该是解决方案。它为您提供了所需的一切。
1赞 Hosein Rahnama 12/10/2022
虽然在 rust 的安装说明中,说最低要求是 和 ,但似乎也是要求。MSVCwindows 10 SDKC++ CMake tools for windows
0赞 Jan 8/28/2023
我还需要在我使用 Windows 11 安装的 clang 上choco install llvm
0赞 TheEhsanSarshar 4/19/2022 #12

只需安装,您就可以开始了。Microsoft c++ Build Tools

这是链接

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

2赞 Gagan Suie 9/6/2022 #13

在 VS 2022 上,我测试了这两种解决方案。

4.39 GB =“MSVC v143 - VS 2022 C++ x64/x86 生成工具”和“Windows 10 SDK”

2.86 GB =“使用 C++ 进行桌面开发”

最好只选择“使用 C++ 进行桌面开发”。

以下是 VS 2022 构建工具的下载: https://aka.ms/vs/17/release/vs_BuildTools.exe

6赞 Marco Lackovic 10/10/2022 #14

在 PowerShell 终端中运行:

winget install -e --id Microsoft.VisualStudio.2022.BuildTools

然后:

  • 打开 Visual Studio 安装程序
  • 修改
  • 检查使用 C++ 进行桌面开发
  • 修改
4赞 Yuriy Pelekh 10/19/2022 #15

我看到该术语在安装过程中引入了混乱,确切地选择了什么。C++ Build tools

它是具有默认依赖项的组件(请参见屏幕截图)。根据我的经验,我注意到只需要两个选项(在屏幕截图上用红色矩形突出显示)。但要有信心,只需选择默认选择并享受:)Desktop development with C++

Desktop development with C++

1赞 MFaiqKhan 12/5/2022 #16

方法 1:如果使用 MSVC 工具链编译 Rust 程序

安装Microsoft cpp 构建工具,通过管理员安装并重新启动您的 pc,您的 rust 程序将 https://visualstudio.microsoft.com/visual-cpp-build-tools/ 正常运行。

方法二:使用MINGW GCC编译器,基于GNU的编译器和工具链来编译你的rust程序

按照本指南安装 mingw,https://code.visualstudio.com/docs/cpp/config-mingw

如果你有 MINGW,那么你所要做的就是粘贴一个包含这个的配置文件

[target.x86_64-pc-windows-gnu]
linker = "C:\\msys2\\mingw64\\bin\\gcc.exe"
ar = "C:\\msys2\\mingw64\\bin\\ar.exe"

C:\Users\yourname\.cargo\bin

别忘了让 gnu 成为你默认的 rustup 编译器

rustup 默认 stable-x86_64-pc-windows-gnu

1赞 Raghav 9/18/2023 #17

我遇到了类似的问题,而不是安装,我在中编译了项目,它可能类似于安装。Visual studio build tools for C++WSL2mingwin + stable-x86_64-pc-windows-gnu

此外,您可以为 msvc 或 gnu 安装 rust。winget

C:\Users\Name>winget search rust | find "Rust ("
Rust (MSVC)                          Rustlang.Rust.MSVC                 1.72.0             Tag: rust           winget
Rust (GNU)                           Rustlang.Rust.GNU                  1.72.0             Tag: rust           winget

引用

  1. WSL2 上的 Rust 安装。
  2. 使用 winget 安装软件包
-1赞 lokesh pratap Priyadarshi 9/22/2023 #18

在 C++ 构建模式下进行 VS 安装和更新后 注意 - 编译需要此环境。

货运 - 工程

enter image description here

评论

0赞 Community 9/26/2023
正如目前所写的那样,你的答案尚不清楚。请编辑以添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以在帮助中心找到有关如何写出好答案的更多信息。
0赞 Martin 10/4/2023 #19

在 Windows 上,这是通过

winget install Rustlang.Rust.GNU Rustlang.Rust.MSVC