Compile LibXML2 from source
Get the source code from
http://xmlsoft.org/downloads.html
Linux and Solaris
(Have to use python 32-bit)
cd /opt/mydir/libxml2
mkdir linux-gcc3
gunzib -c libxml2-2.9.4.tar.gz | tar xvf –
cd libxml2-2.9.4
./configure --prefix=/opt/mydir/libxml2/linux-gcc3 --enable-static --disable-shared 2>&1 | tee conf.log
## 64 bit
## ./configure CC="cc -m64" --prefix=/opt/mydir/libxml2/linux-gcc3 --enable-static --disable-shared 2>&1 | tee conf.log
make 2>&1 | tee make.log
make install
If you have Python 2.5 or older, you have to replace all these lines:
libxml2-2.9.4/python/generator.py
From
except IOError as msg:
To
except IOError, msg:
Windows
Machine must have Microsoft Visual Studio 2010
Extract source code to C:\mydir\libxml2
Create a directory C:\mydir\win64
Go to C:\mydir\libxml2\libxml2-2.9.4\win32
(In libxml2-2.9.2, copy the configure.ac to configure.in) (Maybe it's a bug?)
Open command prompt:
cscript configure.js compiler=msvc iconv=no zlib=no debug=no prefix=C:\mydir\win64
# For 64 bit, run this command first:
%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" amd64
nmake /f Makefile.msvc 2>&1 | tee make.log
nmake /f Makefile.msvc install
After that, we need to copy the C:\mydir\win64\include\libxml2\libxml to C:\mydir\win64\include (OMG?!)
libxml2 2.9.4 build error with Visual Studio	2005/2008/2010
https://mail.gnome.org/archives/xml/2016-June/msg00008.html
Apply this patch
diff --git a/relaxng.c b/relaxng.c
index 56a3344..93a0f0b 100644
--- a/relaxng.c
+++ b/relaxng.c
@@ -2087,6 +2087,7 @@ static xmlChar *
 xmlRelaxNGGetErrorString(xmlRelaxNGValidErr err, const xmlChar * arg1,
                          const xmlChar * arg2)
 {
+    xmlChar *result;
     char msg[1000];
     if (arg1 == NULL)
@@ -2215,7 +2216,7 @@ xmlRelaxNGGetErrorString(xmlRelaxNGValidErr err, const xmlChar * arg1,
         snprintf(msg, 1000, "Unknown error code %dn", err);
     }
     msg[1000 - 1] = 0;
-    xmlChar *result = xmlCharStrdup(msg);
+    result = xmlCharStrdup(msg);
     return (xmlEscapeFormatString(&result));
 }
diff --git a/xmlschemas.c b/xmlschemas.c
index e1b3a4f..7afe2eb 100644
--- a/xmlschemas.c
+++ b/xmlschemas.c
@@ -3168,8 +3168,8 @@ xmlSchemaPSimpleTypeErr(xmlSchemaParserCtxtPtr ctxt,
 		"valid.");
 	}
 	if (expected) {
-	    msg = xmlStrcat(msg, BAD_CAST " Expected is '");
 	    xmlChar *expectedEscaped = xmlCharStrdup(expected);
+	    msg = xmlStrcat(msg, BAD_CAST " Expected is '");
 	    msg = xmlStrcat(msg, xmlEscapeFormatString(&expectedEscaped));
 	    FREE_AND_NULL(expectedEscaped);
 	    msg = xmlStrcat(msg, BAD_CAST "'.n");