MingW und Antivirenprogramme...
-
gigg schrieb:
Geh doch mal mit einem Debugger im Einzelschritt-Modus durch das "Hallo-Welt"-Programm. Dann muesstest du doch sehen, was fuer ein Code dort ausgefuehrt wird.
ok, sobald ich versteh, wie man mit gdb arbeitet mach ich das.
ich hab jetzt:
gcc helloworld.c -o helloworld.exe -g
gemacht. so hab ich alle symbols in der exe.aber hier zuerstmal der assemblercode vom compiler:
.file "helloworld.c" .def ___main; .scl 2; .type 32; .endef .section .rdata,"dr" LC0: .ascii "Hello World!\0" .text .globl _main .def _main; .scl 2; .type 32; .endef _main: LFB6: .cfi_startproc pushl %ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 movl %esp, %ebp .cfi_def_cfa_register 5 andl $-16, %esp subl $16, %esp call ___main movl $LC0, (%esp) call _puts movl $0, %eax leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc LFE6: .def _puts; .scl 2; .type 32; .endef
-
Das sieht ganz normal aus. Voellig unverstaendlich, wieso die exe so riesig ist.
-
soll ich die exe mal hochladen?
-
Kann es am Compiller liegen?
Das Hallo-Welt Programm was ich mit VC++ und GCC compiliert habe zeigt
auch einen solchen Größenunterschied: 8kb bei VC++ und 450 Kb bei GCC.0x0ERROR
-
Ich hab seit ueber 10 Jahren kein Windows mehr auf der Festplatte. Vielleicht ist das ja auch normal (soll jetzt kein Bashing sein).
-
0x0ERROR schrieb:
Kann es am Compiller liegen?
Das Hallo-Welt Programm was ich mit VC++ und GCC compiliert habe zeigt
auch einen solchen Größenunterschied: 8kb bei VC++ und 450 Kb bei GCC.0x0ERROR
450 kb? oder meinst du 45,0kb? also 450kb erscheint mir viel zu viel.
ach ja, vor einiger zeit hab ich den mingw-crosscompiler unter linux verwendet (exe unter linux erzeugen), da hatte die datei auch ein halbes mb.
vielleicht liegt es am linker?
-
Nein, ich habe mich nicht verschrieben.
Unter Eigenschaften der Datei steht: 464 KB
-
Ähnliche Beiträge gibt es schon.
Unter Windows:
Also C-Hello World statisch:
TinyCC etwa 1kB
VS etwa 5 bis 8kB?
gcc je nach Version etwa 50kbDas C++-Hello World statisch:
g++ je nach Version sind mir schon 400 bis 900kB in ErinnerungUnter Linux sind gcc und g++ Ergebnisse deutlich kleiner.
Hatte schon mal einen MinGW-GCC wo das Ergebnis auch unter Windows deutlich kleiner war. Find den nicht mehr. Da war C-Hello-World auch unter 10kB und als c++ unter 50kB. Müsste schon ein 4.x.y gewesen sind. Weiss aber nicht mehr woher ich den hatte.
Seit C11 und C++11 sind die ausführbaren Dateien des GCC auch gewachsen.
-
Habe gerade den neuen Code::Blocks 12.11 mit dem MinGW GCC 4.7.1 getestet:
Hello World ist mit dem gcc 26kB@ 0x0ERROR
Wenn man meint einen C-Quelltext durch den g++ zu schicken, kommt man auf etwa 63kB. Ist doch mal wieder kleiner als ein paar Versionen vorher.
-
f.-th. schrieb:
Habe gerade den neuen Code::Blocks 12.11 mit dem MinGW GCC 4.7.1 getestet:
Hello World ist mit dem gcc 26kBMit dem TDM-GCC habe ich die gleichen Werte. Und da ist die Standardbibliothek nicht statisch dazugelinkt. Zudem O3 Optimierungen angestellt.
Wer sich über 26 KB auf einem heutigen Computer Gedanken macht, der hat zu viel Zeit. Das ist ja zum Teil nicht mal mehr im Embedded Bereich interessant.
Und ja, wahrscheinlich sind da jegliche Menge unnütze Headerdaten und anderes dabei. Es wird ja nicht einfach Maschinencode abgespeichert. Unter Windows wird das in eine PE Datei geschrieben.
Grüssli