Warum ist Hello World Programm 460KB gross?



  • Hallo,
    was mir am kompilieren nicht gefällt - und das macht jeder Compiler - das das furzkleine Hello World Programm das gerade mal 65 Byte gross ist nach dem Kompilieren ganze 460KB gross ist. Also die EXE datei ist dann 460KB gross. Da stimmt doch was nicht. Das heisst dann mindestgröße ist 460KB oder was? Wie schaffen es die Leute richtige Programme zu schreiben die noch nicht mal 100KB gross sind. Woran liegt das? Hat das was mit den Parametern zu tun die ich dem Compiler G++.exe übergeben muss. Ich kompiliere immer "g++ code.cc -o code".

    Hilfeeee!

    Dankeeee!



  • seltsamerweise liefert mir

    # g++ main.cpp -o main
    # ls -sh main
      16K main
    

    16 Kilobyte
    mit gcc unter windows kenn ich micht nicht aus, ich denk mal es wird zuviel statisches mitgelinkt. schau mal in deine compilerdoku

    (übrigens: das hat wenig mit Standard C++ zu tun. Ein Moderator wird das verschieben, such aus wohin: lesen und wählen)



  • Ich sag dir mal, was ich für VC++ weiss:

    -> Release Build
    -> Option bei den Linkereinstellungen: Unreferenzierte Variablen und Funktionen entfernen



  • Und falls die EXE dann immer noch zu groß ist, hilft meistens http://upx.sourceforge.net/.



  • http://de.geocities.com/throni3/cpp/Kapitel_14.html
    hallo
    lies mal hier den Absatz über printf() durch.
    das wird dir 100% weiter helfen.
    thx



  • operator void schrieb:

    Und falls die EXE dann immer noch zu groß ist, hilft meistens http://upx.sourceforge.net/.

    Kleine Verständnisfrage: Ws macht UPX eigentlich genau?

    Ich habe das mal kurz auf ein Executable von mir losgelassen und die Datei wurde auf ein drittel der ursprünglichen Größe geschrumpft.

    So wie ich das verstehe, ist das doch nur ein Packprogramm. Wird dann das ursprüngliche Executable im Speicher wieder hergestellt? Dann ist das exe eigentlich ja immer noch genauso groß wie vorher.

    /Dirk



  • Ja, ist sie nach dem extrahieren auch. Eine gepackte exe kannst du nicht ausführen. Da wird quasi die exe gepackt an einen Entpacker gehängt und bei ausführen entpackt und ausgeführt.



  • die exe ist so gross weil keine zeit hat für sowas den compilier zu optimieren und weil die cppstdlib streams ein ganze frameworks sind die es einen ermöglichen erweiterung reinzubringen usw. das in einen "hallo world" ist wie mit kanonen auf spatzen geschossen,


Anmelden zum Antworten