5.6. Libstdc++ de GCC-12.2.0

Libstdc++ est la bibliothèque standard du C++. Elle est requise pour compiler du code C++ (une partie de GCC est écrit en C++) mais nous avons dû retarder son installation lorsqu'on a construit gcc-pass1, car elle dépend de Glibc, qui n'était pas encore disponible dans le répertoire cible.

Temps de construction approximatif: 0.2 SBU
Espace disque requis: 1.1 Go

5.6.1. Installation de Libstdc++ Cible

[Note]

Note

Libstdc++ fait partie des sources de GCC. Vous devriez d'abord déballer l'archive tar de GCC et vous rendre dans le répertoire gcc-12.2.0.

Créez un répertoire de construction séparé pour Libstdc++ et rentrez-y :

mkdir -v build
cd build

Préparez la compilation de Libstdc++ :

../libstdc++-v3/configure           \
    --host=$LFS_TGT                 \
    --build=$(../config.guess)      \
    --prefix=/usr                   \
    --disable-multilib              \
    --disable-nls                   \
    --disable-libstdcxx-pch         \
    --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/12.2.0

Voici la signification des options de configuration :

--host=...

Indique d'utiliser le compilateur croisé que nous venons tout juste de construire à la place de celui de /usr/bin.

--disable-libstdcxx-pch

Ce paramètre empêche l'installation des fichiers inclus pré-compilés, qui ne sont pas nécessaires pour l'instant.

--with-gxx-include-dir=/tools/$LFS_TGT/include/c++/12.2.0

Cela spécifie le répertoire d'installation des fichiers d'en-tête. Comme Libstdc++ est la bibliothèque standard du C++ dans LFS, ce répertoire doit correspondre à l'emplacement où le compilateur C++ ($LFS_TGT-g++) cherche les fichiers d'en-tête C++ standards. Dans une construction standard, cette information est automatiquement passée aux options configure de Libstdc++ à partir du répertoire de plus haut niveau. Dans notre cas, cette information doit être passée explicitement. Le compilateur C++ ajoutera le chemin sysroot $LFS (spécifié à la construction de GCC passe 1) au début du chemin de recherche des en-têtes, pour qu'il recherche effectivement dans $LFS/tools/$LFS_TGT/include/c++/12.2.0. La combinaison de la variable DESTDIR (dans la commande make install ci-dessous) et ce paramètre s'assure d'installer les en-têtes à cet emplacement.

Compilez Libstdc++ en exécutant :

make

Installez la bibliothèque :

make DESTDIR=$LFS install

Supprimez les fichiers d'archive libtool car ils sont dangereux pour la compilation croisée :

rm -v $LFS/usr/lib/lib{stdc++,stdc++fs,supc++}.la

Les détails sur ce paquet sont disponibles dans Section 8.26.2, « Contenu de GCC. »