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

我已经安装了从 生锈安装页窗口生锈。安装之后,我尝试运行“ 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!");
}
108289 次浏览

我下载并安装了 VisualStudio2019版本工具。在安装过程中,我选择了 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!

我也有同样的问题,发现即使在安装了构建工具之后它仍然存在。我几乎是偶然地意识到,我正在“ VisualStudio 的开发人员命令提示符”中运行所有的货物命令。在一个简单的 cmd shell 中运行相同的命令没有任何问题。

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

可能的原因 : Visual Studio Command Prompt 在启动 shell 之前运行 bat 文件,例如 VsDevCmd.bat (加载与 VS 相关的环境变量等) ,可能该文件中的一个命令搞错了货物访问链接器的路径。

如果他们真的想知道,有人可以进一步挖掘,找出导致这个问题的确切线索。

尝试在 VisualStudio 之外使用 Powershell。

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

你也可以试试: rustc

祝你好运。

案例1: 使用 C + + win 编译器,要修复它,你需要重新安装 VS 构建工具 C + +

从 Microsoft 网站下载 VisualStudio2019Build 工具: Https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=buildtools&rel=16

下载之后,在安装 Build 工具时,请确保安装了所需的组件:

  1. C + + 构建工具

这将下载所需的文件。一旦安装成功,重新启动并重新运行生锈程序,它就会成功编译。

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

输入 cmd:

  1. rustup uninstall toolchain stable-x86_64-pc-windows-msvc
  2. (或者在 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,然后运行 CASE 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

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

要执行“货物运行”,你需要从 为 VisualStudio 生成工具安装 C + + 构建工具。2019版本就可以了。下载链接: Https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=buildtools&rel=16#

在安装过程中,不仅要选择默认的“包含”C + + 工具,还要选择三个 可选的 C + + 构建工具: MSVC (...) ,Windows 10 SDK,C + + CMake tools for Windows。

我的系统变量中有一些来自旧的 VisualStudio 安装的变量。删除这些变量就解决了问题。

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 + + 构建工具。 然后,安装 Rustup-init. exe。 并且在成功安装生锈后不要删除第一个。

C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.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/,它将下载一个 VisualStudioInstaller。

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

required list

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

只要安装 Microsoft c++ Build Tools就可以了。

链接在这里

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

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

4.39 GB = “ MSVC v143-VS 2022 C + + x64/x86 build tools”和“ Windows 10 SDK”

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

最好选择“使用 C + + 的桌面开发”。

下面是 VS 2022构建工具的下载: Https://aka.ms/vs/17/release/vs_buildtools.exe

在 PowerShell 终端运行中:

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

然后:

  • 打开 VisualStudio 安装程序
  • 修改
  • 检查 用 C + + 进行桌面开发
  • 修改

我看到术语 C++ Build tools引入了混淆,在安装过程中究竟应该选择什么。

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

Desktop development with C++

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

安装 Microsoft cpp Build 工具,通过管理员安装并重新启动您的电脑,您的生锈程序将正常运行 Https://visualstudio.microsoft.com/visual-cpp-build-tools/.

方法2: 使用 MINGWGCC 编译器、基于 GNU 的编译器和工具链来编译生锈程序

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

如果你有 MINGW 比所有你必须做的是粘贴一个包含此 < strong > config 文件

[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 默认稳定-x86 _ 64-pc-windows-gnu