Rust auf Windows: Den Linker-Fehler 'cc' not found in 5 Minuten beheben

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Erste Begegnung mit dem „roten Drachen“

\n\n

Sie haben gerade angefangen, Rust zu lernen. Sie haben den Compiler heruntergeladen, Ihr erstes hello.rs geschrieben, führen cargo build aus... Und dann explodiert das Terminal mit einer roten Meldung: „linker 'cc' not found“. Kommt Ihnen bekannt vor? Wenn Sie auf Windows 10 mit dem WSL-Subsystem und Debian arbeiten, ist dieser Fehler ein klassischer „Gruß“ aus der Welt der Systemprogrammierung.

\n\n

Keine Panik. Dies ist kein Bug von Rust, sondern eine Besonderheit der Umgebungskonfiguration. In diesem Artikel werden wir dieses Problem nicht ein für alle Mal lösen, sondern auch darüber sprechen, wie Sie den Build-Prozess optimieren können, damit Ihr Code schneller kompiliert wird. Schließlich ist Rust für seine Leistung bekannt, und wir sollten dem Compiler die besten Werkzeuge für seine Arbeit geben.

\n\n

Warum tritt der Fehler „linker 'cc' not found“ auf?

\n\n

Um den Feind zu verstehen, muss man ihn kennen. Rust ist eine kompilierte Sprache. Wenn Sie cargo build ausführen, wandelt der Compiler rustc Ihren Code in Maschinencode um. Aber die letzte Phase ist das Linken (Zusammenführen der Objektdateien zu einer ausführbaren Datei). Diese Arbeit erledigt ein externes Programm – der Linker.

\n\n

Standardmäßig sucht Rust in Linux-Systemen (einschließlich WSL Debian) nach dem Linker cc. Dies ist ein symbolischer Link, der normalerweise auf gcc oder clang verweist. Wenn in Ihrem WSL-System kein C-Compiler (GCC oder Clang) installiert ist, fehlt der Link cc. Rust weiß nicht, womit es Ihr Projekt linken soll, und gibt einen fatalen Fehler aus.

\n\n

Die Ursache des Problems: WSL Debian – Minimalinstallation

\n

Wenn Sie WSL Debian aus dem Microsoft Store installieren, erhalten Sie ein nacktes System. Es enthält weder GCC noch Make noch andere Entwicklerwerkzeuge. Rust enthält keinen C-Linker – dies liegt in der Verantwortung der Systemumgebung.

\n\n

Methode Nr. 1: Schnelle Lösung (Installation von GCC)

\n\n

Der einfachste und korrekteste Weg ist die Installation des Standard-Werkzeugsatzes für die C-Entwicklung. Öffnen Sie das WSL Debian-Terminal und führen Sie Folgendes aus:

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

Das Paket build-essential ist ein Meta-Paket, das gcc, g++, make und, was am wichtigsten ist, den Link /usr/bin/cc erstellt. Überprüfen Sie nach der Installation:

\n\n
which cc\n# Sollte anzeigen: /usr/bin/cc
\n\n

Führen Sie nun erneut cargo build aus – der Fehler wird verschwinden. Rust hat den Linker gefunden.

\n\n

Warum ist das für die Leistung wichtig?

\n

Durch die Verwendung des standardmäßigen GCC erhalten Sie einen stabilen und optimierten Linker. Rust wird Ihr Projekt mit minimalem Overhead erstellen. Optimierung beginnt mit den richtigen Werkzeugen.

\n\n

Methode Nr. 2: Feineinstellung (Installation von Clang)

\n\n

Wenn Sie ein Fan von LLVM und Clang sind (und Rust verwendet unter der Haube ebenfalls LLVM), können Sie diese anstelle von GCC installieren. Dies kann bei einigen Projekten zu einer leichten Steigerung der Linkgeschwindigkeit führen.

\n\n
sudo apt install clang lld\n# Erstellen Sie den Link manuell, falls er nicht vorhanden ist\nsudo ln -s /usr/bin/clang /usr/bin/cc
\n\n

Überprüfung:

\n
cc --version\n# Sollte Clang anzeigen
\n\n

Wichtig: LLD (LLVM Linker) arbeitet oft schneller als der klassische GNU ld. Bei großen Rust-Projekten kann dies die Build-Zeit um 10-20% verkürzen. Die Installation von Clang ist nicht nur eine Fehlerbehebung, sondern eine Optimierung der Kompilierungsleistung.

\n\n

Methode Nr. 3: Workaround (manuelle Angabe des Linkers)

\n\n

Es gibt Situationen, in denen Sie GCC oder Clang nicht installieren möchten (z. B. auf einem Produktionsserver mit Einschränkungen). Sie können Rust explizit mitteilen, welchen Linker es verwenden soll. Beachten Sie jedoch: Ohne einen installierten Linker funktioniert diese Methode nicht.

\n\n

Erstellen Sie eine Datei ~/.cargo/config.toml (oder /.cargo/config.toml für globale Einstellungen):

\n\n
[target.x                

Blogs

Buchempfehlungen