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-Fehler
  • clang --analyze: statische Analyse direkt aus dem Compiler
  • clang-format: Code automatisch formatieren, clang-tidy: statische Code-Analyse
  • clangd: 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.