Extracted from the documentation:
   http://xmlsoft.org/FAQ.html#Compilatio

See also the generic INSTALL file for configure options

Compilation

   1.What is the process to compile libxml ? 

     As most UNIX libraries libxml follows the "standard":

     gunzip -c xxx.tar.gz | tar xvf -

     cd libxml-xxxx

     ./configure --help

     to see the options, then the compilation/installation proper

     ./configure [possible options]

     make

     make install

     At that point you may have to rerun ldconfig or similar utility to
     update your list of installed shared libs.

     At this point you can check that the library is properly functioning
     by running

     make tests

   2.What other libraries are needed to compile/install libxml ? 

     Libxml does not requires any other library, the normal C ANSI API
     should be sufficient (please report any violation to this rule you
     may find).

     However if found at configuration time libxml will detect and use
     the following libs:

         libz: a highly portable and available widely compression library 
             http://www.info-zip.org/pub/infozip/zlib/
         iconv: a powerful character encoding conversion library. It's
	     included by default on recent glibc libraries, so it doesn't
	     need to be installed specifically on linux. It seems it's
	     now part of the official UNIX specification. Here is one
	     implementation of the library which source can be found here.
             http://clisp.cons.org/~haible/packages-libiconv.html
             ftp://ftp.ilog.fr/pub/Users/haible/gnu/

   3.make tests may fail on some platforms 

     Sometime the regression tests results don't completely match the
     value produced by the parser, and the makefile uses diff to print
     the delta. On some platforms the diff return breaks the compilation
     process, if the diff is small this is probably not a serious problem

Daniel
veillard@redhat.com
