I. Introduction :

libxml2 est une librairie permettant la lecture de fichier XML ainsi que la manipulation d'arbres XML DOM.

Pour plus de renseignement sur cette librairie, voici le site officiel : The XML C parser and toolkit of Gnome.

 

II. Installation de libxml2 :

Pour commencer, il nous faut récupérer la dernière version disponible sur le dépôt SVN de la librairie. Il suffit de lancer un terminal en mode normal (voir Installation - Toolchain Linux), de se placer dans le dossier psp (voir Installation - Toolchain Linux) et de suivre les instructions suivantes :

1
2
3
4
5
6
cd /home/smartpsp/psp

svn co svn://svn.gnome.org/svn/libxml2/trunk

mv trunk libxml-trunk
# afin de renommer "proprement" le dossier

 

Maintenant, il faut se placer dans le dossier libxml-trunk, créer un fichier dup.c et l'éditer :

1
2
3
4
5
cd libxml-trunk

touch dup.c

gedit dup.c &

 

Ensuite, il faut placer le code source suivant à l'intérieur du fichier dup.c et enregistrer les modifications:

1
2
3
4
5
6
#include <fcntl.h> 
 
int 
dup (int fd1) { 
   return (fcntl (fd1, F_DUPFD, 0)); 
}

 

Il faut, maintenant, éditer le fichier Makefile.am et ajouter dup.c dedans :
 
1
2
3
4
gedit Makefile.am &

# Ajouter dup.c à la ligne 35
# après xmlIO.c

 

Pour générer les premiers fichiers de configuration, il faut éxecuter autogen.sh :

1
./autogen.sh

 

Avant de lancer le script ./configure, il nous faut éditer le fichier config.sub afin qu'il prenne en compte la directive --host=psp :

1
gedit config.sub &

 

Une section psp) est à rajouter après la section ps2) à la ligne n°911 :

1
2
3
4
  psp)
basic_machine=mipsallegrexel-psp
os=-elf
;;

 

Enfin, nous pouvons lancer le script ./configure afin de préparer le processus de compilation :

1
2
3
4
CFLAGS="-g -O2 -G0 -Wall"
LDFLAGS="-L$(psp-config --psp-prefix)/lib -L$(psp-config --pspsdk-path)/lib"
LIBS="-lz -lc -lstdc++ -lpsplibc -lpspuser -lpspnet_inet -lpspnet_resolver"
./configure --host=psp --disable-shared --prefix=$(psp-config --psp-prefix)

ATTENTION, les lignes 1, 2, 3, et 4 doivent être tapées sur la même ligne !

 

Lors du processus de compialtion avec make, vous allez sûrement avoir une erreur de compilation sur un des fichiers de test. Ce n'est pas grave, la librairie est de tout façon compilée. Il suffit d'enchaîner avec make install, qui lui aussi retournera une erreur au même endroit. Là encore, pas de panique, seul les headers (fichiers .h) sont installés.

Il suffit donc de copier quelques fichiers (les fichiers librairie) dans les bons dossiers :

1
2
3
4
5
6
7
make
sudo make install
 
cp .libs/libxml2.a /usr/local/pspdev/psp/lib/
# ".libs" est le nom du dossier contenant libxml2.a
cp libxml2.la /usr/local/pspdev/psp/lib/
cp libxml-2.0.pc /usr/local/pspdev/psp/lib/pkgconfig/

 

III. Utilisation de la librairie :

Maintenant, que nous l'avons installée, il est temps de voir comment l'utiliser.

Concernant les headers à inclure, il vaut mieux regarder la documentation sur le site officiel. Chacun des headers de libxml2 a une utilité spécifique et il n'est pas nécessaire de tous les inclure à chaque fois.

 

Contrairement aux headers, il n'y a qu'une seule librairie à inclure dans le Makefile.

Afin que la compilation se passe sans problème, il faut ajouter un argument dans le fichier Makefile à la ligne contenant la variable LIBS : en règle général on le place à la fin de ligne à la suite des autres arguments de cette variable.

1
LIBS = -lxml2

ATTENTION, la lettre entre le tiret et xml2 est un L minuscule.