2016-05-08 2 views
0

Ich benutze Mingw Compiler auf Windows-Umgebung. Wenn ich ein Hallo-Welt-Programm mit Iostream mit diesen Flags kompiliere: g++ hello.cpp -static -s Ausgabe ist 967 kb. Wenn ich g++ hello.cpp -s verwende, ist die Ausgabe 16 KB, aber es gibt libgcc_s_dw2-1.dll fehlender Fehler auf anderen Computern. Wie kann ich es mit akzeptabler Dateigröße erstellen?C++ - statische Flag macht ausführbare Datei zu groß

+1

Was Sie wahrscheinlich finden, ist, dass die eigentliche Bibliothek 'libgcc_s_dw2-1.dll' eine viel größere Größe als beide Binärdateien haben wird. Wenn Sie also die ausführbare Datei neben der mingw shared library verteilen, erhöht sich die Gesamtgröße. Dies ist mit der Ausnahme, dass Sie eine große Anzahl von Mingw mit freigegebenen Bibliotheken auf einem bestimmten System haben. Auch warum ist 967kb nicht akzeptabel? das ist weniger als 1mb ??? sicherlich mit der heutigen hware ist das eine triviale menge an lagerung ?? – silvergasp

+1

Von der [Dokumentation] (https://gcc.gnu.org/onlinedocs/gcc-6.1.0/gcc/Link-Options.html#Link-Options) von GCC verhindert das '-static' Schlüsselwort das Verknüpfen mit dem Shared Bibliotheken. Das bedeutet, dass die Bibliothek mit Ihrem Programm statisch verknüpft wird (die Bibliotheken werden Teil Ihres Programms), was zu einer Vergrößerung der Bibliothek führt. –

Antwort

0

Sie könnten versuchen, die Debug-Informationen aus Ihrer ausführbaren Datei mit strip zu entfernen, um die Größe etwas zu reduzieren, aber das macht das Debuggen es direkt etwas schwierig.

Verwandte Themen