wxWidgets statisch linken



  • Hallo,
    ich hab wxWidgets mit MinGW neu kompiliert. ( shared=0, monolithic=0, build=release, unicode=1 ) Zuerst hatte ich eine große Monolithic Bibliothek gelinkt aber die resultierende .exe war 66mb groß! Jetzt habe ich die Non-Monolithic Bibliothek
    gelinkt, aber das ergebnis war wieder eine 66mb große Datei. 😞 Wie oder wo kann ich festlegen, welche Bibliotheken benutzt werden sollen?( Programm nutzt hauptsächlich nur GUI-Features von wxWidgets ). Als IDE nutze ich CodeLite.
    Ich hoffe ihr könnt mir weiterhelfen.



  • Wenn du statisch linken willst, solltest du nicht monolithisch bauen. Desweiteren kannst du die Auswahl zu kompilierender Komponenten einschränken, indem du die Flags in config.gcc setzt. Dein Programm sollte demnach dann nur die nötigen Libs linken. MSVC empfiehlt sich eher für das Kompilieren unter Windows, da die erstellten Bibliotheken deutlich kleiner und etwas schneller sind als mit MinGW.

    66MB ist deutlich zu groß, da hast du wohl einiges falsch gemacht. Mehr Informationen, wie du baust und welche wx Version du verwendest wären hilfreich.



  • Desweiteren kannst du die Auswahl zu kompilierender Komponenten einschränken, indem du die Flags in config.gcc setzt

    Ist das die Konfigurationsdatei im build Ordner? Also muss ich die Bibliotheken
    gleich 0 setzen die ich nicht brauche?

    66MB ist deutlich zu groß, da hast du wohl einiges falsch gemacht. Mehr Informationen, wie du baust und welche wx Version du verwendest wären hilfreich.

    Naja ich hatte eben alles von wxWidgets statisch gelinkt. Habe bis dato mit Codelite gearbeitet, dass bereits wxwidgets und mingw installiert hat und habe mich erst vor kurzem mit dem selbst kompilieren von wxwidgets beschäftigt um nicht immer die dlls mitliefern zu müssen. Ich nutze die aktuelle Version von wxWidgets(2.9.4).



  • Youka schrieb:

    66MB ist deutlich zu groß, da hast du wohl einiges falsch gemacht. Mehr Informationen, wie du baust und welche wx Version du verwendest wären hilfreich.

    Nö, das ist völlig normal mit dem g++ und (wahrscheinlich) Debug Einstellungen.
    Einfach mal strip drüber laufen lassen und die Datei ist viel kleiner.



  • Scorcher24 schrieb:

    Youka schrieb:

    66MB ist deutlich zu groß, da hast du wohl einiges falsch gemacht. Mehr Informationen, wie du baust und welche wx Version du verwendest wären hilfreich.

    Nö, das ist völlig normal mit dem g++ und (wahrscheinlich) Debug Einstellungen.
    Einfach mal strip drüber laufen lassen und die Datei ist viel kleiner.

    Er meinte, die .exe wäre 66MB groß, und laut seinen Einstellungen kompiliert er als Release, womit ich -s mal annehme.
    (Ich habe damals mit wx 2.9.3 für einen Release Build mit MinGW lediglich ~7.5MB gelinkt, mit wx 2.9.4 und MSVC nun nur noch ~4.2MB. Komponenten waren auch nur GUI und wenige andere.)

    gero++ schrieb:

    Ist das die Konfigurationsdatei im build Ordner?

    In build\msw.

    gero++ schrieb:

    Also muss ich die Bibliotheken
    gleich 0 setzen die ich nicht brauche?

    So ist es.



  • Danke für die ausführlichen Antworten. 😃 Ich habe jetzt in der wxconfig.gcc
    die Libraries wegelassen, die ich nicht benötigte, jetzt spuckt mir aber der Compiler einen Fehler aus:

    g++ -o ./Release/math_display @"math_display.txt" -L. -s -mwindows -mthreads -LD:\wxwidgets\lib\gcc_lib -lwxmsw29u_xrc -lwxmsw29u_aui -lwxmsw29u_html -lwxmsw29u_adv -lwxmsw29u_core -lwxbase29u_xml -lwxbase29u_net -lwxmsw29u_richtext -lwxbase29u -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregexu -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwxregexu -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32
    d:/mingw/bin/../lib/gcc/mingw32/4.7.1/../../../../mingw32/bin/ld.exe: cannot find -lwxmsw29u_xrc
    d:/mingw/bin/../lib/gcc/mingw32/4.7.1/../../../../mingw32/bin/ld.exe: cannot find -lwxmsw29u_aui
    d:/mingw/bin/../lib/gcc/mingw32/4.7.1/../../../../mingw32/bin/ld.exe: cannot find -lwxmsw29u_richtext

    Mir ist klar, dass die Fehler mit den nicht vorhandenen Bibliotheken zusammenhängen, doch ich hab keine Ahnung wie ich verhindere, dass diese gelinkt werden. Könnte das mit dem vorkompilierten Header wx/wx.h zu tun haben?

    Hoffe jemand antwortet noch der Thread ist ja schon recht alt 🙂


Anmelden zum Antworten