[Dev-C++] EXE-Dateigröße
-
Nabend!
Bin Dev-C++-Einsteiger. Wieso ist ein Hallo Welt Konsolen-Programm ca. 450 KB groß? Was muss ich anders einstellen, damit das kleiner wird?Bye, Bloops
-
hallo Bloops,
es gibt unter Compiler Optionen -> Einstellungen (ggf. auch unter Projektoptionen -> Compiler Optionen) die Möglichkeit, diverse Einstellungen zu veraendern, welche auf der einen Seite die Groesse der exe-Datei, auf der anderen Seite aber auch die Debug-Informationen beeinflussen. Am Besten spielst Du damit mal ein wenig rum...
SF
-
Hab ich schon. Hab sämtliche Debug-Sachen auf No...
-
OK, hab grad testhalber auch so'n Hallo Programm uebersetzt, und's hat 439 KB...
Kenn das halt von nem anderen Pojekt, da macht der Unterschied alles auf NO und relevantem auf YES ca. 1,3 MB aus, aber Hallo, die Groesse ueberrascht mich nun auch...
Vielleicht weiss ja sonst jemand was?Hab da ein par Eintraege vorher was gefunden:
http://www.c-plusplus.net/forum/viewtopic.php?t=52161
-
Bei mir ist Hello World nur 73k groß. Aber der Compiler hat von sich aus <iosteam.h> geschrieben (ohne r). Ich arbeite normalerweise nicht mit diesem Compiler, deshalb ich guck mir mal meine Einstellungen an.
-
Ich weiß nicht wodran es liegt, ich post euch mal meine Einstellungen (alles was ich hingeschrieben hab ist bei mir aktiv, alles was fehlt ist nicht aktiv):
Compiler options:
Directories:
Bin directory: C:\Dev-C++\Bin\
C include files: C:\Dev-C++\Include\
C++ include files: C:\Dev-C++\Include\G++;C:\Dev-C++\Include\
Libraries directory: C:\Dev-C++\Lib\C/C++ compiler:
Accept $ in identifiers
Use heuristics to compile fasterCoder generation/Optimization:
Perform a number of minor optimizations
Linker:
-
An Deinen Einstellungen liegt's nicht. Mit DEV-CPP wird der MinGW-Compiler mitgeliefert (eine Windows-Portierung des gcc). In der Faq auf http://www.mingw.org findet sich dazu folgender Eintrag:
Why is my C++ binary so large?
C++ programs using the Standard Template Library (ie/ #include <iostream>) cause a large part of the library to be statically linked into the binary. The need to statically link the stdc++ into the binary is two fold. First MSVCRT.dll does not contain C++ stdlib constructs. Second the legal implications of generating a libstdc++.dll are restricted by the licensing associated with the library. If you wish to keep your file size down use strip to remove debugging information and other verbatim found in the binary.strip --strip-all SOMEBINARY.exe
Das liegt also am Compiler, der einfach die ganze Bibliothek statisch linkt...
Aus eigener Erfahrung kann ich aber sagen, dass sich dies nur auf kleine Programme (wie "Hello World") auswirkt. Wenn Du grössere Projekte schreibst wächst die EXE nur noch langsam. Und die Geschwindigkeit des Programms leidet ja auch nicht unter der grossen EXE. Halt ein kleiner Schönheitsfehler, mehr nicht!Gruss,
Andreas
-
Es gibt ein paar Tools, die noch bessere Wirkung haben als strip.
Nachteil: die wirken immer nur auf einer bestimmten Version des Compilers. Vielleicht mal in Newgroups nachfragen, ob's was aktuelles gibt.