GCC (GNU Compiler Collection, ursprünglich GNU C Compiler) ist die Standard-Compiler-Suite auf Linux. Der Befehl gcc übersetzt C-Quellcode, g++ C++. Dahinter stecken die Frontends für C, C++, Objective-C, Fortran, Ada und Go.

Grundaufrufe

gcc hello.c -o hello          # kompilieren und linken
gcc -c hello.c                # nur Objektdatei hello.o (ohne Linken)
gcc -E hello.c                # nur Präprozessor (expandierte Quelle)
gcc -S hello.c                # Assembler-Quelle hello.s
g++ main.cpp -o programm      # C++-Variante

Wichtige Optionen

  • -Wall -Wextra: gängige Warnungen aktivieren, -Werror: Warnungen als Fehler behandeln
  • -O0 bis -O3: Optimierungsstufen, -Os: Größe optimieren
  • -g: Debug-Informationen (für GDB), -g3: zusätzliche Makros
  • -std=c17 bzw. -std=c++17: Sprachstandard, -pedantic: strikte Standardkonformität
  • -Iinclude: Include-Verzeichnis, -Llib + -lm: Bibliothekspfad und -name
  • -pthread: POSIX-Threads einbinden, -fsanitize=address: AddressSanitizer

Compiler-Pipeline

GCC durchläuft vier Phasen: Präprozessor (-E), Compiler (-S, C nach Assembler), Assembler (-c, Objektdatei) und Linker (fertiges Programm). Die Werkzeuge dahinter sind cpp, cc1, as und ld.

Verwandte Grundlagen: Compiler, C/C++-Befehle, Clang-Befehle, GDB-Befehle, Make-Befehle.