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 Eintrag wurde veröffentlicht in CPP von marc-o. Setze ein Lesezeichen zum Permalink.

Schreibe einen Kommentar

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

I accept that my given data and my IP address is sent to a server in the USA only for the purpose of spam prevention through the Akismet program.More information on Akismet and GDPR.

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