Clang ist das C/C++/Objective-C-Frontend der LLVM-Infrastruktur. Es ist kommandozeilenkompatibel zu GCC, nutzt aber ein modulares Backend und bietet eigene Werkzeuge wie clang-format und clang-tidy.
Grundaufrufe
clang hello.c -o hello # C kompilieren und linken
clang++ main.cpp -o programm # C++-Variante
clang -c hello.c # Objektdatei
clang -S hello.c # Assembler-Quelle
clang -E hello.c # Präprozessor-Ausgabe
LLVM-Besonderheiten
- Clang übersetzt über eine plattformunabhängige Zwischendarstellung (LLVM-IR), dadurch einfache Cross-Compilation
-Weverything: alle Warnungen aktivieren (deutlich mehr als-Wall)-fsanitize=address,undefined: Sanitizer für Speicher- und Undefined-Behavior-Fehlerclang --analyze: statische Analyse direkt aus dem Compilerclang-format: Code automatisch formatieren,clang-tidy: statische Code-Analyseclangd: Language Server für IDE-Integration (Autovervollständigung, Diagnose)
Vergleich mit GCC
Clang akzeptiert die meisten GCC-Flags wie -O2, -g und -std=c17. Viele Projekte bauen daher wahlweise mit beiden Compilern. Clang ist Standard auf macOS (Xcode) und bei LLVM-basierten Werkzeugketten wie Rust.
Verwandte Grundlagen: Compiler, GCC-Befehle, GDB-Befehle, C/C++-Befehle, Rust-Befehle.