libxml mit MinGW übersetzten

Zuerst benötigen wir noch ein paar andere Bilbiotheken dafür, alle sind direkt hier (ftp://ftp.zlatkovic.com/libxml) zu finden, oder nachfolgend entsprechend die Quellen zum selber übersetzen. Wobei ich in diesen fällen für die Libraries selbst bin, auch häufig auf den unten genannten Websiten auch noch zu finden.

libiconv: Als Sourcen auf der Website Linux bzw. Windows zu finden oder direkt diesen Link benutzen: Linux oder Windows.

libzlib: Als Sourcen auf der Website http://www.zlib.net/.

Jetzt müssen wir uns mal die aktuellen Source herunterladen, am einfachsten auf dieser Website http://xmlsoft.org/downloads.html unter Snapshot diesen Link benutzen: libxml2-git-snapshot.tar.gz.

Nach dem entpacken wechseln wir in den entsprechenden Ordner:

libxml-source\win32

Dort konfigurieren wir dann unser makefile mit diesem Befehl:

cscript configure.js compiler=mingw prefix=%OUTPUT-DIR% include=%MINGW-INCLUDE% lib=%MINGW-LIB% debug=yes iso8859x=yes

Hier nochmal ein Beispiel, damit kann sich meist mehr vorstellen, so werden sie auch direkt in den MinGW-Ordner kopiert:

cscript configure.js compiler=mingw prefix=D:\Programme\MinGW include=D:\Programme\MinGW\include lib=D:\Programme\MinGW\lib debug=yes iso8859x=yes

und nun noch installieren und in den output-Ordner kopieren lassen:

mingw32-make -f Makefile.mingw
mingw32-make -f Makefile.mingw install

Es gibt noch Probleme beim verwenden der lib, und zwar ist in der <libxml/xmlexport.h>nur bei der Sektion für _WIN32 && __MINGW32__ ist der dllexport anders gebaut und zwar steht da folgender Codefragment:

#if !defined(LIBXML_STATIC)

Bei allen anderen steht dies dabei:

#if defined(IN_LIBXML) && !defined(LIBXML_STATIC)

Wenn man diese Zeile wie bei den anderen ändert, dann funktioniert auch alles wieder oder man definiert vor den includes der libxml die LIBXML_STATIC wenn man die Library direkt mit reinkompilieren möchte.

Dieser Beitrag wurde unter CPP veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.