Introdução: Primeiro encontro com o "dragão vermelho"
\n\nVocê acabou de começar a estudar Rust. Baixou o compilador, escreveu seu primeiro hello.rs, executou cargo build... E então o terminal explode em vermelho com a mensagem: "linker 'cc' not found". Familiar? Se você está no Windows 10, usando o subsistema WSL com Debian, esse erro é um clássico "alô" do mundo da programação de sistemas.
Não entre em pânico. Isso não é um bug do Rust, é uma questão de configuração do ambiente. Neste artigo, vamos não apenas resolver esse problema de uma vez por todas, mas também falar sobre como otimizar o processo de build para que seu código compile mais rápido. Afinal, Rust é famoso por sua performance, e devemos dar ao compilador as melhores ferramentas para trabalhar.
\n\nPor que ocorre o erro "linker 'cc' not found"?
\n\nPara entender o inimigo, precisamos conhecê-lo de frente. Rust é uma linguagem compilada. Quando você executa cargo build, o compilador rustc transforma seu código em código de máquina. Mas a etapa final — a linkagem (junção dos arquivos objeto em um executável) — é feita por um programa externo: o linker.
Por padrão, em sistemas Linux (incluindo WSL Debian), o Rust procura pelo linker cc. Este é um link simbólico que geralmente aponta para gcc ou clang. Se no seu sistema WSL não houver um compilador C instalado (GCC ou Clang), o link cc não existirá. O Rust não sabe como linkerar seu projeto e exibe um erro fatal.
Raiz do problema: WSL Debian — instalação mínima
\nQuando você instala o WSL Debian pela Microsoft Store, obtém um sistema básico. Ele não vem com GCC, Make ou outras ferramentas de desenvolvimento. O Rust não inclui um linker C — essa é uma responsabilidade do ambiente do sistema.
\n\nSolução nº 1: Correção rápida (instalação do GCC)
\n\nO caminho mais simples e correto é instalar o conjunto padrão de ferramentas de desenvolvimento C. Abra o terminal WSL Debian e execute:
\n\nsudo apt update\nsudo apt install build-essential\n\nO pacote build-essential é um meta-pacote que inclui gcc, g++, make e, o mais importante, cria o link /usr/bin/cc. Após a instalação, verifique:
which cc\n# Deve mostrar: /usr/bin/cc\n\nAgora execute cargo build novamente — o erro desaparecerá. O Rust encontrou o linker.
Por que isso é importante para a performance?
Ao usar o GCC padrão, você obtém um linker estável e otimizado. O Rust compilará seu projeto com sobrecarga mínima. A otimização começa com as ferramentas certas.
Solução nº 2: Configuração precisa (instalação do Clang)
Se você é fã do LLVM e Clang (e o Rust também usa LLVM internamente), pode instalá-lo em vez do GCC. Isso pode trazer um pequeno ganho de velocidade de linkagem em alguns projetos.
sudo apt install clang lld
# Cria o link manualmente, se não existir
sudo ln -s /usr/bin/clang /usr/bin/cc
Verificação:
cc --version
# Deve mostrar Clang
Importante: O LLD (LLVM Linker) geralmente é mais rápido que o GNU ld clássico. Para grandes projetos Rust, isso pode reduzir o tempo de build em 10-20%. Instalar o Clang não é apenas corrigir um erro, é otimizar a performance da compilação.
Solução nº 3: Solução alternativa (especificar o linker manualmente)
Existem situações em que você não quer instalar GCC ou Clang (por exemplo, em um servidor de produção com restrições). Você pode dizer explicitamente ao Rust qual linker usar. Mas atenção: sem um linker instalado, esta solução não funcionará.
Crie o arquivo ~/.cargo/config.toml (ou /.cargo/config.toml para configuração global):
[target.x