size aus den GNU Binutils zeigt, wie groß die einzelnen Sektionen einer Objektdatei oder eines Programms sind. Die klassische Ausgabe listet die Abschnitte text, data und bss sowie die Summe — damit lässt sich auf einen Blick abschätzen, wie viel Platz ein Programm im Flash belegt und wie viel RAM es zur Laufzeit braucht.

size main.elf
   text    data     bss     dec     hex filename
  12340     456     320   13116    333c main.elf

Formate und Radix

-A (SysV-Format) listet jede einzelne Sektion auf, -B wählt das klassische Berkeley-Format, -G das GNU-Format. Mit -d, -o und -x schaltet man zwischen dezimaler, oktaler und hexadezimaler Darstellung um, -t ergänzt eine Summenzeile über mehrere Dateien.

size -A -d main.elf
size -t *.o

Typische Fragestellungen

  • Embedded: Passt der Code in den Flash? text und data liegen dort, bss wird zur Laufzeit im RAM angelegt.
  • Speicherprofil: Wächst bss durch große statische Puffer stärker als erwartet?
  • Bibliotheken vergleichen: Bibliotheks-Varianten auf Codegröße prüfen.

Während objdump und readelf das Layout im Detail zeigen, liefert size die kompakte Größenübersicht. Zusammen mit objcopy lässt sich so auch kontrollieren, was nach dem Umbau (zum Beispiel -O binary) noch übrig ist.

Verwandte Grundlagen: objcopy-Befehle, strings-Befehle, Symboltabelle.