Einleitung: Erste Begegnung mit dem „roten Drachen“
\n\nSie 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.
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\nWarum tritt der Fehler „linker 'cc' not found“ auf?
\n\nUm 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.
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.
Die Ursache des Problems: WSL Debian – Minimalinstallation
\nWenn 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\nMethode Nr. 1: Schnelle Lösung (Installation von GCC)
\n\nDer 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\nsudo apt update\nsudo apt install build-essential\n\nDas 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:
which cc\n# Sollte anzeigen: /usr/bin/cc\n\nFühren Sie nun erneut cargo build aus – der Fehler wird verschwinden. Rust hat den Linker gefunden.
Warum ist das für die Leistung wichtig?
\nDurch 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\nMethode Nr. 2: Feineinstellung (Installation von Clang)
\n\nWenn 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\nsudo 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:
\ncc --version\n# Sollte Clang anzeigen\n\nWichtig: 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\nMethode Nr. 3: Workaround (manuelle Angabe des Linkers)
\n\nEs 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\nErstellen Sie eine Datei ~/.cargo/config.toml (oder /.cargo/config.toml für globale Einstellungen):
[target.x