Les détails sur ce paquet sont disponibles dans Section 8.27.2, « Contenu de GCC. »
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.
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-13.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++/13.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++/13.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++/13.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.27.2, « Contenu de GCC. »