libXML2 statisch mit EclipseCDT und MinGW linken
-
Hallo allerseits,
ich möchte gern ein Windows-C-Programm bauen, welches die libXML2 verwendet.
Dazu soll diese komplett statisch dazugelinkt werden, d.h. das ausführbare Programm soll ohne zusätzliche DLL auskommen!
Dazu habe ich schon die Binaries von hier: http://www.zlatkovic.com/libxml.en.html#binaries geholt und den Anweisungen entsprechend statisch dazugelinkt.
Das Ergebnis: Das fertige Programm braucht die libXML2.dll!
Dann bin ich einem Hinweis aus dem Web gefolgt und habe statt der libXML2 die libXML2_a dazugelinkt, allerdings mit demselben Ergebnis!
Schließlich habe ich mir die Sourcen von libXML2 von hier ftp://xmlsoft.org/libxml2/ geholt und mit Hilfe von MSYS wie hier http://www.pokorra.de/coding/compile_libxml_mingw.html beschrieben compiliert.
Wenn ich nun die fertige libXML2.a in libXML2.lib umbenenne kann ich sie in meinem Projekt dazulinken (immerhin 7,4MB!).
Das Ergebnis beim Programmstart: libxml2-2.dll wird nicht gefunden!
Dann habe ich in EclipseCDT beim MinGW die Option für "Keine shared Libraries" aktiviert.
Das Ergebnis: Beim Linken massig undefined references auf Funktionen von nanoftp. Dies ist aber mit in die libXML2.lib gebaut worden und ich habe auch beim Erstellen dieser libXML die Flags -lxml2 -lwsock32 mit ins makefile übernommen!
Es ist zum Haare... xgrmpf grrr §%$&!
Bin kurz vorm durchdrehen!
Was man immer für Scherereien hat, benötigte Sachen zum Laufen zu bekommen, bevor man mit der eigentlichen Problemlösung beginnen kann!
Da bin ich von Java wohl echt viel zu verwöhnt!
Kann von euch hier bitte jemand weiterhelfen?
Vielen Dank schon einmal!
Ciao
-
Hallo
Ganz ruhig, Brauner. Welche IDE benutzt du? Du musst die lib-Dateien auch von der IDE aus einbinden sonst will er die immer per "#include", aus dem lokalen Ordner haben.
way
-
Wie gesagt verwende ich EclipseCDT und MinGW.
Im CDT sind die Lib-Verzeichnisse für die fette libXML2.lib, für die iconv_a und die zlib angegeben. Dazu die Namen für die Libfiles:
gcc -static -LC:\Programme\iconv-1.9.2.win32\lib -LC:\Programme\libxml2-2.7.3\lib -LC:\Programme\zlib-1.2.3.win32\lib -o<mein_Object_File> src\main.o -liconv_a -llibxml2 -lzlib
Vielleicht geht das wirklich nur mit den Sourcen für libxml2-2.4.25-special.tar.gz, wie auf der einen von mir genannten Seite genannt?!
Bei libXML2 in Version 2.7.3 gibt es auch ein Unterverzeichnis zum Bauen unter Windows. Das hab ich aber noch nicht probiert. Der Build unter MSYS läuft dagegen durch.
Habe auch schonmal probiert die resultierende libxml2.a ohne Umbenennung in das lib-Verzeichnis von MinGW zu legen. Hatte leider auch keinen Erfolg (frage mich allerdings, wie MinGW diese .a-Dateien verwendet?)!
Ciao
-
Hallo
Hm, dass ist komisch. Haste mal versucht, die lib in den Umgebungsvariablen einzutragen?
way
-
Nun funktionierts!
Habe mal ein bisschen nachgedacht und viel geraten und die wsock32 noch dazugelinkt, da diese auch auf der einen Website mit angegeben ist.
Allerdings dachte ich, dass ich das nicht mehr brauche, da ich das schon im Makefile der libXML2 überall mit drin hatte!
Naja nun tut es jedenfalls und ich kann hoffentlich endlich mit der Problemlösung weitermachen!
Ciao
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Wenn du deine statisch kompilierte Lib irgendwo hochladen könntest, wäre das echt super!
Danke