 
          Introduction
La base de données Berkeley DB est embarquée dans de multiples produits Open Source comme OpenLDAP (Annuaire LDAP), Apache Tigris Subversion (gestion des sources).
Cet article présente la compilation de BerkeleyDB 4.5 avec minGW sous Windows, compilation réalisée dans le cadre de l’étude de la mise en place d’une architecture OpenLDAP et Apache Tigris Subversion, 2 produits qui reposent sur BerkeleyDB. minGW est une plateforme de compilation pour Windows avec un environnement Cygwin léger et un environnement bourne shell. Pour plus d’informations à propos de MinGW : Installation de MinGW sousWindows - Minimalist GNU for Windows .
Il existe une version bien plus récente de BerkeleyDB : BerkeleyDB 5.1. Toutefois cette version n’est pas encore opérationnelle pour MinGW et gcc 4.5.0, il demeure des points à résoudre à propos de sockets et des mutex.
Préparation de la compilation
Point de montage /berkeleydb-4.5
MinGW est installé dans le répertoire C:\MinGW. La distribution compilée
            BerkeleyDB 4.5 sera installée dans le répertoire C:\MinGW\berkeleydb-4.5.
Le répertoire C:\MinGW\berkeleydb-4.5 est d’abord créé puis le point de
            montage /berkeleydb-4.5 est réalisé dans l’environnement MinGW avec la commande
            mount ou en éditant directement le fichier /etc/fstab :
sqlpac@MSYS$ mount C:\\mingw\\berkeleydb-4.5  /berkeleydb-4.5Téléchargement des sources de BerkeleyDB
Les sources Berkeley DB 4.5.20.tar.gz de BerkeleyDB 4.5.20 sont téléchargées
            depuis le site Oracle (Berkeley DB Release History
              - Téléchargements). Il s’agit d’une archive compressée. Cette archive est
            décompressée dans le répertoire /home/compilations/db-4.5.20 :
sqlpac@MSYS$ cd /home/compilations
sqlpac@MSYS$ gunzip db-4.5.20.tar.gz
sqlpac@MSYS$ tar xvf db-4.5.20.tarConfiguration
La configuration est réalisée en se positionnant dans le sous répertoire
            build_unix des sources et en appelant le script configure localisé dans le
            répertoire ../dist. L’option --help donne toutes les options de
            configuration.
sqlpac@MSYS$ cd /home/compilations/db-4.5.20/build_unix sqlpac@MSYS$ ../dist/configure --help'configure' configures Berkeley DB 4.5.20 to adapt to many kinds of systems. Usage: ../dist/configure [OPTION]... [VAR=VALUE]... ...
La ligne de commande pour la configuration est alors la suivante :
sqlpac@MSYS$ cd /home/compilations/db-4.5.20/build_unix
sqlpac@MSYS$ ../dist/configure --prefix=/berkeleydb-4.5 --enable-mingw \
                  --enable-cxx  \
                  LIBCSO_LIBS=-lwsock32 \
                  LIBXSO_LIBS=-lwsock32 > cfg45.log 2>&1- L’option --prefix=/berkeleydb-4.5indique le répertoire d’installation de la distribution compilée.
- L’option --enable-mingwest disponible dans la configuration de BerkeleyDB pour spécifier qu’il s’agit d’une compilation avec MinGW.
- L’option --enable-cxxactive la création de la librairie des API C++ pour Berkeley DB.
2 options de compilations sont forcées : LIBCSO_LIBS=-lwsock32 et
            LIBXSO_LIBS=-lwsock32.
LIBCSO_LIBS et LIBXSO_LIBS basculent respectivement la compilation des API C
            et C++ (--enable-cxx) pour les sockets vers celles de wsock32. Dans le cas
            contraire, la compilation make aboutit à l’erreur ci-dessous :
Creating library file: .libs/libdb-4.5.dll.a
 .libs/os_errno.o:os_errno.c:(.text+0x3f): undefined reference to `WSAGetLastError@0'
 .libs/os_errno.o:os_errno.c:(.text+0x54): undefined reference to `WSASetLastError@4'
collect2: ld returned 1 exit status
make: *** [libdb-4.5.la] Error 1Compilation et installation (make, make install)
Compilation (make)
La compilation est lancée avec la commande classique make
sqlpac@MSYS$ cd /home/compilations/db-4.5.20/build_unix
sqlpac@MSYS$ make > makebdb45.log 2>&1Installation de la distribution compilée (make install)
La commande make install installe la distribution compilée dans
            /berkeleydb-4.5 (option --prefix de la commande configure)
sqlpac@MSYS$ cd /home/compilations/db-4.5.20/build_unix
sqlpac@MSYS$ make install > makebdb45.install.log 2>&1 Distribution BerkeleyDB 4.5
La distribution BerkleyDB 4.5 est dès lors disponible dans /berkeleydb-4.5
            ($BERKELEYDB_HOME).
Les librairies dynamiques et programmes sont installés dans
            $BERKELEYDB_HOME/bin :
| BerkeleyDB 4.5 | 
 | 
Les fichiers librairies *.a sont installés dans $BERKELEYDB_HOME/lib, ils
            sont nécessaires pour compiler OpenLDAP et d’autres outils utilisant BerkeleyDB
            : libdb-4.5.a, libdb-4.5.dll.a, libdb.a, libdb_cxx-4.5.a, libdb_cxx-4.5.dll.a,
            libdb_cxx.a.