libxml mit MinGW übersetzten

Wie LibXML mit dem MinGW verwendet werden kann, wird hier erklärt.

Zuerst benötigen wir noch ein paar andere Bilbiotheken dafür, alle sind direkt hier 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 zlib.

Jetzt müssen wir uns mal die aktuellen Source herunterladen, am einfachsten auf dieser Website von xmlsoft 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.