Compilation lauffähiger Executables (g++/ VS 2010)



  • Salvete,

    mit einem peinlichen Beitrag bitte ich heute im Hilfe. Ich möchte von einem Projekt ausführbare Executables (Binaries) anbieten für Win/OS X/Linux.

    Mein Projekt benötigt libharu, libpng, libz (nicht zlib) und damit wohl auch libstd++. Da die Programme auch auf Systemen von Nutzern laufen sollen, die diesen ganzen Kram nicht installiert haben, dachte ich, dass das linken mit statischen Bibliotheken wohl das geschickteste sei.

    Frage: Wie bekomme ich das mit g++ hin. Insbesondere OS X (aktuelle 10.6 Version, 64bit System) beschwert sich über Probleme mit dynamischen vom System bereitgestellten Bibliotheken, wenn ich das Linkerfag -static nutze (-Wl,-static akzeptiert er erst gar nicht). Hier mal die Fehlermeldungen des Linkers:

    ld: warning: unexpected dylib (/usr/local/lib/libpng.dylib) on link line
    ld: warning: unexpected dylib (/usr/lib/gcc/i686-apple-darwin10/4.2.1/libstdc++.dylib) on link line
    ld: warning: unexpected dylib (/usr/local/lib/libz.dylib) on link line
    ld: warning: unexpected dylib (/usr/local/lib/libhpdf.dylib) on link line
    ld: warning: unexpected dylib (/usr/lib/libSystem.dylib) on link line
    ld: warning: unexpected dylib (/usr/lib/system/libmathCommon.A.dylib) on link line
    Undefined symbols:
      "___dso_handle", referenced from:
          _pvars in crt1.10.6.o
          __static_initialization_and_destruction_0(int, int)in ssd.o
    ld: symbol(s) not found
    collect2: ld returned 1 exit status
    make: *** [ScoreSheetDesigner2011] Error 1
    

    und ich nehme an, dass es unter Linux ähnlich sein wird. Irgendeine Idee, wie man das löst?

    1. Habt ihr Erfahrungen mit libpng und libz unter Windows/ VS 2010?

    Vielen Dank für Hilfe,
    G.



  • Wozu soll das -static gut sein?

    Geht nicht einfach so etwas wie

    g++ a.o b.o c.o -o myprog.exe -lharu -lpng -lz -LPfad/Zu/libharu.a -Landerer_pfad -Lander_pfad
    

    ?



  • Hola wxSkip,

    habe ich natuerlich auch gehofft, leider aber beschwert sich dann die Datei mit einer Fehlermeldung, wenn auch anderen Rechnern die stdc++ beispeilweise nicht installiert ist (was der normale OS X Nutzer ja nicht unbedingt auf seinem Rechner hat, wenn er nicht XCode installiert hat -- unter Linux/Windows habe ich es noch nicht probiert) ob irgendwelcher dylib Probleme (die genaue Fehlermeldung kann ich bei einem Freund nochmal erfragen).

    Gruss,
    G.



  • Ich dachte eigentlich, das Problem mit dem Standardlib-Linken gäbe es nur bei MSVC++ unter Windows. Tut mir Leid, da könntest du höchstens noch das Internet bemühen, ich kenne das Problem leider (oder zum Glück?) nicht.


Anmelden zum Antworten