提问人:Zobia Kanwal 提问时间:4/10/2019 最后编辑:Zobia Kanwal 更新时间:10/4/2023 访问量:149770
无法在 Windows 上编译 Rust hello world:找不到链接器链接 .exe
Unable to compile Rust hello world on Windows: linker link.exe not found
问:
我已经从 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!");
}
答:
我下载并安装了 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!
评论
我遇到了同样的问题,发现即使在安装构建工具后也存在。我几乎偶然地意识到,我在“Visual Studio 开发人员命令提示”中运行了我所有的 cargo 命令。在简单的 cmd shell 中运行相同的命令没有任何问题。
对我有用:直接运行命令提示符,而不使用 Visual Studio 创建的快捷方式。
可能的原因:Visual Studio 命令提示符在启动 shell 之前运行 bat 文件,例如 VsDevCmd.bat(加载与 VS 相关的环境变量等),并且该文件中的命令之一可能搞砸了 cargo 用于访问链接器的路径。
如果有人真的想知道,可以进一步挖掘以找到导致问题的确切线路。
评论
cargo run
请尝试在 Visual Studio 外部使用 Powershell。
然后 cargo 在 src 的父文件夹中运行。
您也可以尝试:rustc
祝你好运。
案例1:使用C++ win编译器,要修复它,您需要重新安装VS构建工具C++
从 Microsoft 网站下载 Visual Studio 2019 生成工具:https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16
下载后,在安装生成工具时,请确保安装所需的组件:
- C++ 生成工具
这将下载所需的文件。一旦一切都安装成功,重新启动并重新运行你的 rust 程序,它就会成功编译。
案例 2:此错误可能来自您使用 GCC 进行编译以修复它(假设您已经拥有 MinGW):
输入 cmd:
rustup uninstall toolchain stable-x86_64-pc-windows-msvc
rustup toolchain install stable-x86_64-pc-windows-gnu
(或在 https://forge.rust-lang.org/infra/other-installation-methods.html 下载您选择的平台的 rustup-init)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
评论
"stable-i686-pc-windows-gnu"
错误消息非常不清楚,因为无需安装 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 工具。
评论
我的系统变量中有一些来自旧 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 后删除第一个。
评论
添加到PATH变量就完成了诀窍C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64
评论
如果上述解决方案仍然不适合你(这是 2021 年),Rust 使用 msvc 和 gnu 编译器,所以你可以随时切换到 gnu 编译器:
$ rustup default stable-x86_64-pc-windows-gnu
评论
好!
这正是我所做的。转到 https://visualstudio.microsoft.com/visual-cpp-build-tools/,它将下载 Visual Studio 安装程序。
以管理员身份运行它,然后确保下载屏幕截图中下面列出的所有三个内容,版本无关紧要,只需尝试获取最新版本即可。
点击安装。重新启动计算机。不客气。
评论
Workloads
Desktop development with C++
MSVC
windows 10 SDK
C++ CMake tools for windows
choco install llvm
只需安装,您就可以开始了。Microsoft c++ Build Tools
这是链接
https://visualstudio.microsoft.com/visual-cpp-build-tools/
在 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
在 PowerShell 终端中运行:
winget install -e --id Microsoft.VisualStudio.2022.BuildTools
然后:
- 打开 Visual Studio 安装程序
- 按修改
- 检查使用 C++ 进行桌面开发
- 按修改
我看到该术语在安装过程中引入了混乱,确切地选择了什么。C++ Build tools
它是具有默认依赖项的组件(请参见屏幕截图)。根据我的经验,我注意到只需要两个选项(在屏幕截图上用红色矩形突出显示)。但要有信心,只需选择默认选择并享受:)Desktop development with C++
方法 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
我遇到了类似的问题,而不是安装,我在中编译了项目,它可能类似于安装。Visual studio build tools for C++
WSL2
mingwin + 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
引用
在 C++ 构建模式下进行 VS 安装和更新后 注意 - 编译需要此环境。
货运 - 工程
评论
在 Windows 上,这是通过
winget install Rustlang.Rust.GNU Rustlang.Rust.MSVC
评论