strip aus den GNU Binutils entfernt Symbole und Debug-Informationen aus Objektdateien, ausführbaren Programmen und Archiven. Das verkleinert Binärdateien deutlich — in Produktivsystemen und Containern ist gestrippter Code der Standard, während Entwickler-Builds die Debug-Symbole behalten.

Grundaufrufe

strip programm            # alle Symbole entfernen (Datei wird direkt verändert)
strip --strip-debug prog  # nur Debug-Informationen entfernen
strip --strip-unneeded o  # nur für die Relokation unnötige Symbole entfernen
strip -o prog.klein prog  # Ausgabe in eine neue Datei schreiben
strip --strip-all lib.a   # alle Mitglieder eines Archivs strippen

Wichtige Optionen

  • -s/--strip-all — alle Symbole entfernen; -g/-S/-d/--strip-debug — nur Debug-Informationen
  • --strip-unneeded — entfernt nur Symbole, die für die Relokation nicht gebraucht werden (schonender für Bibliotheken)
  • -K name/--keep-symbol — bestimmte Symbole behalten; -N name/--strip-symbol — gezielt entfernen
  • -o datei — Ergebnis in eine separate Datei schreiben statt die Eingabe zu verändern
  • --only-keep-debug — nur die Debug-Sektionen behalten (Gegenstück für die zweiteilige Debug-Lösung)

Zweiteilige Debug-Info (mit objcopy)

Wer die Debug-Informationen nicht ganz verlieren will, nutzt die klassische Kombination: objcopy --only-keep-debug programm programm.dbg legt eine Datei nur mit Debug-Daten an, strip --strip-debug programm entfernt sie aus dem Programm und objcopy --add-gnu-debuglink=programm.dbg programm trägt den Verweis ein. Der Debugger findet die Symbole dann über den Debuglink — ausführlich erklärt bei den objcopy-Befehlen.

Praxis-Tipps

  • Distributions-Pakete strippen Binärdateien standardmäßig und liefern Debug-Symbole als separate Pakete
  • Vor dem Strippen ein Backup behalten: Ohne Symbole sind Stack-Traces nur noch Adressen (es sei denn, man löst sie per addr2line-Befehle mit einer .dbg-Datei auf)
  • strip libfoo.a strippt alle Mitglieder des Archivs — nachher ranlib laufen lassen, damit der Index aktuell bleibt (siehe ranlib-Befehle)
  • Größenvergleich: size programm zeigt vorher/nachher, wie viel Platz die Symbole kosteten (siehe size-Befehle)

Verwandte Grundlagen: objcopy-Befehle (Debuglink), ar-Befehle (Archive), Symboltabelle.