10.62. Bibliothèques 32 Bit Libtool-2.4.6

Le paquet Libtool contient le script de support générique des bibliothèques GNU. Il enveloppe la complexité d'utiliser des bibliothèques partagées dans une interface cohérente et portable.

10.62.1. Installation de Libtool

Le fichier config.cache suivant permet de forcer le chemin de recherche par défaut pour prendre en compte l'environnement multilib :

echo "lt_cv_sys_dlsearch_path='/lib /usr/lib /usr/local/lib /opt/lib'" > config.cache

Préparez la compilation de Libtool :

CC="gcc ${BUILD32}" ./configure \
    --prefix=/usr \
    --cache-file=config.cache

Compilez le paquet :

make

Pour tester les résultats, vous devez d'abord savoir si votre machine a une architecture big-endian ou little-endian. Les machines SGI sont généralement de type big-endian et les Cobalt sont de type little-endian. Si vous avez un doute, echo ${MACHTYPE} | grep 'el-' trouvera une occurrence sur une machine de type little-endian.

Pour tester les résultats sur une machine little-endian, lancez : make LDEMULATION=elf32ltsmip check.

Pour tester les résultats sur une machine big-endian, lancez : make LDEMULATION=elf32btsmip check.

Voici la signification du paramètre de make check :

LDEMULATION=[emulation]

Libtool a tendance à se comporter de façon inattendue en environnement multilib, du moins sur des architectures autres que celle par défaut. On ne saisit pas tout à fait les causes de ces erreurs car elles peuvent apparaître ou disparaître bon gré mal gré, même lors de changements normalement inoffensifs au bon déroulement de la compilation. Dans cette version du livre, l'un des tests, pdemo-make, ne se lie pas correctement car il cherche à lier les objets 32 bits aux bibliothèques 64 bits du système. Cette option permet à ce test de réussir sans impacter les autres tests (par rapport aux méthodes de correction plus traditionnelles comme spécifier LD="gcc ${BUILD32}", ce qui empêche l'exécution de nombreux test ou bien configurer avec LDFLAGS='-L/lib -L/usr/lib', ce qui dans ce cas fait échouer d'autres tests).

Installez le paquet :

make install

Préparez libtool à être pris en charge par le programme enveloppe multi-architectures (« multiarch-wrapper »). Libtool seul ne supporte pas l'environnement multilib :

mv -v /usr/bin/libtool{,-32}

Des détails sur ce paquet se trouvent sur Section 10.64.2, « Contenu de Libtool. »