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.5
Té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.tar
Configuration
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.5
indique le répertoire d’installation de la distribution compilée. - L’option
--enable-mingw
est disponible dans la configuration de BerkeleyDB pour spécifier qu’il s’agit d’une compilation avec MinGW. - L’option
--enable-cxx
active 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 1
Compilation 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>&1
Installation 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
.