Installation de la librairie GMP
Lorsque l’on développe des programmes en C, il est intéressant de savoir installer soi-même des librairies supplémentaires. Deux solutions sont possible. La première est de prendre la librairie qui a été déjà compilée par le gestionnaire du système d’exploitation. Pour la librairie GMP, voici quelques exemples de packages à installer :
- debian: https://packages.debian.org/source/jessie/gmp
- RPM: https://www.rpmfind.net/linux/rpm2html/search.php?query=gmp
Lors de l’installation d’une telle librairie, c’est souvent la package
-dev
qu’il faut installer pour avoir la librairie à linker et
les fichiers .h
.
Une meilleure solution est d’installer ces librairies manuellement depuis leurs sources. Voici un exemple sur MacOS.
Installation de GMP sur MacOS
La première étape est de charger la librairie. Celle-ci est fournie sous
différents formats. Le format .tar.xz
est directement supporté
sur le Mac, les autres pas nécessairement.
# curl -o gmp.tar.xz https://gmplib.org/download/gmp/gmp-6.2.0.tar.xz
# tar xf gmp.tar.xz
La commande tar
va extraire tous les fichiers de l’archive dans
le répertoire gmp-6.2.0
.
Ce répertoire contient de nombreux fichiers qui peuvent faire peur à première vue. Le premier réflexe est de regarder si il y a des fichiers texte de documentation.
# cd gmp-6.2.0/
# ls
AUTHORS configure missing
COPYING configure.ac mp_bpl.c
COPYING.LESSERv3 cxx mp_clz_tab.c
COPYINGv2 demos mp_dv_tab.c
COPYINGv3 doc mp_get_fns.c
ChangeLog errno.c mp_minv_tab.c
INSTALL extract-dbl.c mp_set_fns.c
INSTALL.autoconf gen-bases.c mpf
Makefile.am gen-fac.c mpn
Makefile.in gen-fib.c mpq
NEWS gen-jacobitab.c mpz
README gen-psqr.c nextprime.c
acinclude.m4 gen-trialdivtab.c primesieve.c
aclocal.m4 gmp-h.in printf
asl.h gmp-impl.h rand
assert.c gmp.pc.in scanf
bootstrap.c gmpxx.h tal-debug.c
compat.c gmpxx.pc.in tal-notreent.c
compile install-sh tal-reent.c
config.guess invalid.c test-driver
config.in longlong.h tests
config.sub ltmain.sh tune
configfsf.guess memory.c version.c
configfsf.sub mini-gmp ylwrap
C’est bien le cas ici puisque le fichier INSTALL
décrit comment
installer cette librairie. Comme beaucoup de logiciels et de librairies,
GMP utilise autoconf
pour faciliter son installation.
L’installation d’un programme utilisant
autoconf
débute par l’exécution du script configure
qui analyse de façon
détaillée le système sur lequel celui-ci doit être installé.
configure
supporte de très nombreux paramètres. Vous pouvez
en obtenir la liste en faisant ./configure --help
.
Un des paramètres très utiles de configure
est --prefix
qui permet de spécifier le répertoire dans lequel la librairie
doit être installée (par défaut ces librairies vont dans
/usr/local/lib
, les exécutables dans /usr/local/bin
…
A titre d’illustration, nous décidons d’installer gmp
dans
le répertoire ~/local
, c’est-à-dire le sous-répertoire
local
dans le répertoire home de l’utilisateur courant.
# ./configure --prefix ~/local
checking build system type... haswell-apple-darwin18.7.0
checking host system type... haswell-apple-darwin18.7.0
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... ./install-sh -c -d
...
configure: summary of build options:
Version: GNU MP 6.2.0
Host type: haswell-apple-darwin18.7.0
ABI: 64
Install prefix: /Users/obo/local
Compiler: gcc
Static libraries: yes
Shared libraries: yes
Ensuite il suffit de taper make
pour compiler l’entièreté
de la librairie.
Comme il s’agit d’une librairie mathématique, il est important de vérifier que celle-ci fonctionne correctement en exécutant les tests fournis par les développeurs. C’est un rappel utile, si il en fallait encore, de l’importance des tests.
# make check
Il reste à installer les binaires générés dans ~/local
avec
# make install
# ls -l ~/local/lib
total 3016
-rwxr-xr-x 1 obo staff 553960 Apr 7 15:31 libgmp.10.dylib
-rw-r--r-- 1 obo staff 980464 Apr 7 15:31 libgmp.a
lrwxr-xr-x 1 obo staff 15 Apr 7 15:31 libgmp.dylib -> libgmp.10.dylib
-rwxr-xr-x 1 obo staff 912 Apr 7 15:31 libgmp.la
drwxr-xr-x 3 obo staff 96 Apr 7 15:31 pkgconfig
La même procédure peut s’utiliser pour installer la librairie
gmp
sur différents versions de Linux.