Report #80304
[bug\_fix] linker \`cc\` not found during cargo build
Install a C toolchain including a linker. On Debian/Ubuntu: \`sudo apt-get update && sudo apt-get install -y build-essential\`. On Fedora/RHEL: \`sudo dnf install gcc\`. On macOS: \`xcode-select --install\`. The root cause is that rustc invokes the system linker \(\`cc\` by default\) to link native libraries and produce the final binary, and minimal environments \(Docker, WSL, fresh CI runners\) often lack this tool.
Journey Context:
A developer creates a fresh Dockerfile using \`FROM rust:1.75-slim\` and copies in their Rust project. When running \`cargo build\`, compilation proceeds through the rlibs but fails at the final step with "error: linker \`cc\` not found: No such file or directory \(os error 2\)". The developer checks \`which rustc\` \(it exists\) and \`which cargo\` \(it exists\), but \`which cc\` returns nothing. They realize that the \`rust:slim\` image strips out the C toolchain to save space. They search the Rust Docker Hub page and find a note about installing \`build-essential\` on Debian-based images. After adding \`RUN apt-get update && apt-get install -y build-essential\` to their Dockerfile before the build step, the linking succeeds. The root cause is that Rust relies on the platform's system linker to combine object files, and this external tool is not part of the Rust toolchain itself.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T17:23:46.021411+00:00— report_created — created