Größe der Anwendungen in wxWidgets



  • Ich habe bemerkt das allein das Beispielprojekt von WxWidgets im DevC++ ca. 3 MB groß ist. Ich verstehe nicht, warum die exe Dateien so unverhältnismäßig groß werden, da es sich ja bei wxWidgets auch nur um ein Framework handelt und zum Beispiel die exe Dateien mit dem VCL oder der MFC nicht so groß werden?
    Mache ich vielleicht einen Fehler, oder anders gefragt, gibt es Möglichkeiten die Größe im Rahmen zu halten?


  • Mod

    Kevinus schrieb:

    Ich habe bemerkt das allein das Beispielprojekt von WxWidgets im DevC++ ca. 3 MB groß ist. Ich verstehe nicht, warum die exe Dateien so unverhältnismäßig groß werden, da es sich ja bei wxWidgets auch nur um ein Framework handelt und zum Beispiel die exe Dateien mit dem VCL oder der MFC nicht so groß werden?
    Mache ich vielleicht einen Fehler, oder anders gefragt, gibt es Möglichkeiten die Größe im Rahmen zu halten?

    Kleiner bekommst du es evtl. wenn du die Libs statisch linkst.
    Ansonsten ist der MS Compiler auch evtl. besser, da er für Windows besser
    optimieren kann.

    Ansonsten kannst du noch dynamisch linken, musst aber sicherstellen das die entsprechenden
    DLLs beim User installiert sind.



  • Wenn deine Anwendung so groß werden, kann das auch bedeuten, dass du die wxWidgets und deine Anwendung mit Debugging Symbolen übersetzt hast. Überprüf das und schalte das Debugging explizit ab.



  • Debugging ist aus, war es auch schon, als ich die Frage stellte. Aber jetzt stellt sich mir die Frage, ob das schlimm ist, eine so große exe zu erstellen, oder ob es bei den Datenmengen, die einem heutigen PC zur Verfügung stehen, relativ egal ist?



  • Kevinus schrieb:

    Debugging ist aus, war es auch schon, als ich die Frage stellte. Aber jetzt stellt sich mir die Frage, ob das schlimm ist, eine so große exe zu erstellen, oder ob es bei den Datenmengen, die einem heutigen PC zur Verfügung stehen, relativ egal ist?

    Ist auch wxWidgets nicht als Debug übersetzt worden???

    Naja... man kann damit Leben, je nach dem, was die Anwendung macht. Du kannst ja mal im Vergleich iTunes nehmen, dass sich wärend des Betriebs ca. 45MB Arbeitsspeicher genehmigt. Der Festplattenplatz ist eigentlich ja auch nicht das entscheidende. Beim Download können je nach Verbindung 3MB schonmal noch viel sein, aber das sollte nicht so schlimm sein. Ich denke, dass es mehr darauf ankommt, wie viel Arbeitsspeicher dein Programm futtert.

    Edit:
    Geht unter Windows eigentlich auch sowas wie

    > strip --strip-unneeded programm.exe
    

    ?
    Wenn ja, dann kannstes mal ausprobieren und wenn das Programm noch kleiner wird, waren noch Debugging Symbole in dem Programm drin...



  • naja wenn ich auf debugging klicke, dann will DevC++ Denug Symbole erstellen. Dies würde doch heißen, dass keine vorhanden waren??



  • Kevinus schrieb:

    naja wenn ich auf debugging klicke, dann will DevC++ Denug Symbole erstellen. Dies würde doch heißen, dass keine vorhanden waren??

    Nein

    Edit: Das heißt, dass keine weiteren hinzugefügt werden. Wenn in wxWidgets schon welche enthalten sind, dann werden die mit in die Executeable übernommen.

    Edit2: Probier das mal in der Console aus, was ich oben geschrieben hab.



  • Hab das gemacht, hat 1 MB gebracht, wow!
    Aber wie krieg ich die Debug Infos direkt aus wxWidgets raus?



  • Kevinus schrieb:

    Hab das gemacht, hat 1 MB gebracht, wow!
    Aber wie krieg ich die Debug Infos direkt aus wxWidgets raus?

    Du lädst die eine Nondebug Version von wxWidgets runter, oder du compilierst es ohne Debuginformationen neu.



  • ja ich habe mir das Package für DevC++ geladen, dass richtet sich automatisch ein. Ja und was muss ich umstellen um die Debuginfos rauszukriegen?



  • Kevinus schrieb:

    ja ich habe mir das Package für DevC++ geladen, dass richtet sich automatisch ein. Ja und was muss ich umstellen um die Debuginfos rauszukriegen?

    Wenn da eine Version ohne Debuginformationen beiliegt, dann stell den Linker so ein, dass er die andere Version benutzt, sonst lad dir den SourceCode runter und compilier selber eine Version ohne Debuginformationen.



  • Was bricht eigentlich dagegen das einfach zu lassen und in einer .bat deinen Befehl auszuführen?

    Der Befehl strip --strip-unneeded, entfernt der ausschließlich Debug Infos oder auch andere codefragmente, die nicht gebraucht werden, oder ich frage besser direkt, was macht dieser Befehl mit meiner Exe, die ja schon in Maschinencode übersetzt wurde???



  • Kevinus schrieb:

    Was bricht eigentlich dagegen das einfach zu lassen und in einer .bat deinen Befehl auszuführen?

    Der Befehl strip --strip-unneeded, entfernt der ausschließlich Debug Infos oder auch andere codefragmente, die nicht gebraucht werden, oder ich frage besser direkt, was macht dieser Befehl mit meiner Exe, die ja schon in Maschinencode übersetzt wurde???

    man strip schrieb:

    --strip-unneeded
    Remove all symbols that are not needed for relocation processing.

    Wenn du deine eigene Version von wxWidgets compilierst, dann kannst du unter Umständen noch weitere optimierungen vornehmen. Außerdem kann es sein, dass strip dein Programm kaputt macht. Vorerst kannst du es ja so lassen, aber der saubere weg würde über eine Release Version von wxWidgets und deinem Programm gehen.


Log in to reply