Windows上的Rust:5分钟解决linker 'cc' not found错误

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:首次遭遇“红色巨龙”

\n\n

您刚开始学习Rust。下载了编译器,编写了第一个hello.rs,运行cargo build……然后终端瞬间被红色信息淹没:「linker 'cc' not found」。熟悉吗?如果您在Windows 10上使用WSL的Debian子系统,那么这个错误就是来自系统编程世界的经典“问候”。

\n\n

不要惊慌。这不是Rust的bug,而是环境配置的特性。在本文中,我们不仅会一劳永逸地解决这个问题,还会讨论如何优化构建过程,让您的代码编译得更快。毕竟Rust以其高性能著称,我们应该为编译器提供最佳的工作工具。

\n\n

为什么会出现「linker 'cc' not found」错误?

\n\n

要了解敌人,必须认清它的面目。Rust是一门编译型语言。当您运行cargo build时,编译器rustc会将您的代码转换为机器码。但最后一个阶段是链接(将目标文件组合成可执行文件)。这项工作由外部程序——链接器完成。

\n\n

默认情况下,在Linux系统(包括WSL Debian)中,Rust会寻找链接器cc。这是一个符号链接,通常指向gcc或clang。如果您的WSL系统中没有安装C编译器(GCC或Clang),那么cc链接就不存在。Rust不知道如何链接您的项目,因此会报出致命错误。

\n\n

问题根源:WSL Debian——最小化安装

\n

当您从Microsoft Store安装WSL Debian时,您得到的是一个裸系统。其中既没有GCC,也没有Make,更没有其他开发者工具。Rust本身不包含C链接器——这是系统环境的责任范围。

\n\n

方法一:快速解决方案(安装GCC)

\n\n

最简单且正确的方法是安装标准的C开发工具集。打开WSL Debian终端并执行:

\n\n
sudo apt update\nsudo apt install build-essential
\n\n

build-essential包是一个元包,它会拉取gcc、g++、make,最重要的是,它会创建/usr/bin/cc链接。安装后请验证:

\n\n
which cc\n# 应显示:/usr/bin/cc
\n\n

现在再次运行cargo build——错误将消失。Rust找到了链接器。

\n\n

为什么这对性能很重要?

\n

使用标准的GCC,您将获得一个稳定且优化的链接器。Rust将以最小的开销构建您的项目。优化始于正确的工具链。

\n\n

方法二:精确配置(安装Clang)

\n\n

如果您是LLVM和Clang的粉丝(Rust底层也使用LLVM),您可以安装它来代替GCC。这可能会在某些项目上带来链接速度的小幅提升。

\n\n
sudo apt install clang lld\n# 如果链接不存在,手动创建\nsudo ln -s /usr/bin/clang /usr/bin/cc
\n\n

验证:

\n
cc --version\n# 应显示Clang
\n\n

重要提示: LLD(LLVM链接器)通常比传统的GNU ld运行得更快。对于大型Rust项目,这可以将构建时间缩短10-20%。安装Clang不仅仅是修复错误,更是编译性能的优化。

\n\n

方法三:变通方案(手动指定链接器)

\n\n

有时您可能不想安装GCC或Clang(例如,在受限的生产服务器上)。您可以明确告诉Rust使用哪个链接器。但请注意:如果没有安装任何链接器,此方法将无效。

\n\n

创建文件~/.cargo/config.toml(或/.cargo/config.toml用于全局配置):

\n\n
[target.x                

博客

书籍推荐