g++ Einstellungen
lima-city → Forum → Programmiersprachen → C/C++ und D
anwendung
aufruf
code
compiler
datei
dienen
elf
fehlerquelle
frage
kompilation
notierung
optimieren
option
parameter
programm
standard
strip
verkleinern
versuchen
verwendung
-
Ich versuche mich derzeit in der Kompilation mithilfe von g++ einzufinden, doch verwundert mich die Größe der kompilierten Datei.
Ich verwende als Parameter lediglich "-o Filename.cpp" und bei einer einfach HelloWorld-Anwendung verbraucht die Executable knapp 485kb.
Nun frage ich mich, ob ich meine Parameter noch optimieren könnte, damit die Anwendung deutlich kleiner wird.
MfG Sw1tch
E:
Die Optionen -O3 und -Os sind mir bekannt, verringern aber in dem HelloWorld-Programm nicht die Größe.
Beitrag zuletzt geändert: 19.11.2009 22:12:04 von sw1tch -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
"-o Filename.cpp"
Sicher? Wenn du das so notierst, überschreibst du deinen Quellcode.
Die Optionen -O3 und -Os sind mir bekannt, verringern aber in dem HelloWorld-Programm nicht die Größe.
Sie können sogar dafür sorgen, dass das compilierte Programm größer wird, wenn Techniken wie Loop-Unroling verwendet werden.
Diese Optionen dienen dazu die Ausführungsgeschwindigkeit zu erhöhen. Dies kann auch durch eine Vergrößerung des Programms in bestimmten Fällen erreicht werden.
Sie dienen aber nicht dazu die Binärdatei zu verkleinern. Das kann höchstens ein Seiteneffekt sein.
Falls du deine Anwendungen wirklich deutlich kleiner machen willst, dann mach einfach
strip compiliertes_programm
und dann sollte die Programmdatei erheblich kleiner sein. An der Ausführungsgeschwindigkeit des Programms ändert das aber rein gar nix.
Noch mal ein paar Erläuterungen: Unter Linux ist das ELF-Binärfomat gängig. Dieses enthält einige Zusatzinfos, die man aber größtenteils durch strip wieder beseitigen kann. Falls du dir mal anschauen willst, was so an Daten darin gespeichert ist, hilft der Befehl
nm compiliertes_programm
weiter.
Außerdem baut der Compiler automatisch weiteren Code um deinen Code herum, so dass dein Programm Aufrufe an die Standard-C-Library machen kann. Daher ist ein simples Hello-World Programm unter Linux auch erheblich größer als unter DOS.
Und Aufrufe an die Standard-C-Library braucht man eigentlich immer.
Beitrag zuletzt geändert: 19.11.2009 22:47:55 von bladehunter -
Schonmal vielen Dank für die gute Antwort.
Ich verwende g++ unter Windows und die Notierung hab ich hier natürlich falsch gepostet.
Ich habe als "Fehlerquelle" schonmal die Verwendung von iostream [cout] ausmachen können. Verwende ich lediglich stdio [printf] verringert sich die Größe von besagten 485kb auf ca 16kb.
Könntest du nochmal ein kurzes Bsp. für die Verwendung von strip geben?
MfG Sw1tch
Ah ich glaube ich habs, es müsste einfach nur -s sein...
Beitrag zuletzt geändert: 20.11.2009 13:36:57 von sw1tch -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage