Rust en Windows: eliminamos el error linker 'cc' not found en 5 minutos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: Primer encuentro con el «dragón rojo»

\n\n

Acabas de empezar a aprender Rust. Descargaste el compilador, escribiste tu primer hello.rs, ejecutas cargo build... Y entonces el terminal explota con un mensaje rojo: «linker 'cc' not found». ¿Te suena? Si trabajas en Windows 10 usando el subsistema WSL con Debian, este error es un clásico «saludo» del mundo de la programación de sistemas.

\n\n

No entres en pánico. Esto no es un error de Rust, es una peculiaridad de la configuración del entorno. En este artículo no solo resolveremos este problema de una vez por todas, sino que también hablaremos sobre cómo optimizar el proceso de compilación para que tu código compile más rápido. Después de todo, Rust es famoso por su rendimiento, y debemos darle al compilador las mejores herramientas para trabajar.

\n\n

¿Por qué ocurre el error «linker 'cc' not found»?

\n\n

Para entender al enemigo, hay que conocerlo. Rust es un lenguaje compilado. Cuando escribes cargo build, el compilador rustc convierte tu código en código máquina. Pero la etapa final es el enlace (ensamblaje de los archivos objeto en un ejecutable). Este trabajo lo realiza un programa externo: el enlazador.

\n\n

Por defecto, en sistemas Linux (incluyendo WSL Debian), Rust busca el enlazador cc. Este es un enlace simbólico que normalmente apunta a gcc o clang. Si en tu sistema WSL no está instalado un compilador de C (GCC o Clang), el enlace cc no existe. Rust no sabe con qué enlazar tu proyecto y muestra un error fatal.

\n\n

La raíz del problema: WSL Debian — instalación mínima

\n

Cuando instalas WSL Debian desde Microsoft Store, obtienes un sistema básico. No tiene GCC, ni Make, ni otras herramientas de desarrollo. Rust no incluye un enlazador de C; esa es responsabilidad del entorno del sistema.

\n\n

Método n.º 1: Solución rápida (instalación de GCC)

\n\n

La forma más sencilla y correcta es instalar el conjunto estándar de herramientas para desarrollo en C. Abre la terminal de WSL Debian y ejecuta:

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

El paquete build-essential es un metapaquete que incluye gcc, g++, make y, lo más importante, crea el enlace /usr/bin/cc. Después de la instalación, verifica:

\n\n
which cc\n# Debería mostrar: /usr/bin/cc
\n\n

Ahora vuelve a ejecutar cargo build — el error desaparecerá. Rust ha encontrado el enlazador.

\n\n

¿Por qué es importante para el rendimiento?

\n

Al usar GCC estándar, obtienes un enlazador estable y optimizado. Rust compilará tu proyecto con una sobrecarga mínima. La optimización comienza con las herramientas adecuadas.

\n\n

Método n.º 2: Configuración precisa (instalación de Clang)

\n\n

Si eres fan de LLVM y Clang (y Rust también usa LLVM internamente), puedes instalarlo en lugar de GCC. Esto puede dar un pequeño aumento en la velocidad de enlace en algunos proyectos.

\n\n
sudo apt install clang lld\n# Creamos el enlace manualmente si no existe\nsudo ln -s /usr/bin/clang /usr/bin/cc
\n\n

Verificación:

\n
cc --version\n# Debería mostrar Clang
\n\n

Importante: LLD (LLVM Linker) a menudo funciona más rápido que el clásico GNU ld. Para proyectos grandes de Rust, esto puede reducir el tiempo de compilación entre un 10 y un 20 %. Instalar Clang no es solo una solución al error, es una optimización del rendimiento de compilación.

\n\n

Método n.º 3: Solución alternativa (especificar el enlazador manualmente)

\n\n

Hay situaciones en las que no quieres instalar GCC o Clang (por ejemplo, en un servidor de producción con restricciones). Puedes indicarle explícitamente a Rust qué enlazador usar. Pero ten en cuenta: sin un enlazador instalado, este método no funcionará.

\n\n

Crea el archivo ~/.cargo/config.toml (o /.cargo/config.toml para una configuración global):

\n\n
[target.x                

Blogs

Book Recommendations