5.8. Ajuster la chaîne d'outils

Maintenant que les bibliothèques C temporaires ont été installées, tous les outils compilés dans le reste de ce chapitre doivent être liés avec ces bibliothèques. Pour accomplir cela, le fichier specs du compilateur croisé doit être ajustés pour pointer vers le nouvel éditeur de liens dynamique dans /tools.

Cela se fait en mettant le fichier « specs » du compilateur à un endroit où il le cherchera par défaut. Un simple script sed modifie alors l'éditeur de liens dynamique que GCC utilisera. Ici, le principe est de trouver toutes les références au fichier de l'éditeur de liens dynamique que dans /lib ou éventuellement /lib64 si le système hôte est capable de tourner en 64 bits, et de les ajuster pour qu'ils pointent vers le nouvel endroit dans /tools.

Par souci de précision, il est recommandé que la commande ci-dessous soit copiée/collée. Assurez-vous d'inspecter visuellement le fichier specs pour vérifier qu'il a correctement ajusté toutes les références à l'endroit où se trouve l'éditeur de liens dynamique. Reportez-vous si nécessaire à Section 5.2, « Notes techniques sur la chaîne d'outils, » pour le nom par défaut de l'éditeur de liens dynamique.

SPECS=`dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/specs
$LFS_TGT-gcc -dumpspecs | sed \
  -e 's@/lib\(64\)\?/ld@/tools&@g' \
  -e "/^\*cpp:$/{n;s,$, -isystem /tools/include,}" > $SPECS
echo "New specs file is: $SPECS"
unset SPECS
[Attention]

Attention

Il est impératif à ce moment de s'arrêter et de s'assurer que les fonctions basiques (compilation et édition des liens) du nouvel ensemble d'outils fonctionnent comme attendu. Pour réaliser une vérification de propreté, lancez les commandes suivantes :

echo 'main(){}' > dummy.c
$LFS_TGT-gcc -B/tools/lib dummy.c
readelf -l a.out | grep ': /tools'

Si tout fonctionne correctement, il ne devrait pas y avoir d'erreurs et la sortie de la dernière commande sera de la forme :

[Requesting program interpreter: /tools/lib/ld-linux.so.2]

Remarquez que /tools/lib ou /tools/lib64 pour les machines 64 bits apparaît comme préfixe de l'éditeur de liens dynamique.

Si l'affichage diffère ou s'il n'y a aucun affichage, alors quelque chose ne se passe pas bien. Enquêtez et tracez vos étapes pour trouver où se cache le problème et comment le corriger. Ce problème doit être corrigé avant de continuer. Quelque chose a pu mal se passer avec la correction du fichier specs ci-dessus. Dans ce cas, refaites la modification de ce fichier en vous assurant de copier/coller les commandes.

Une fois que tout va bien, nettoyez les fichiers de test ::

rm -v dummy.c a.out
[Remarque]

Remarque

Construire Binutils dans la prochaine section servira comme vérification supplémentaire de la bonne mise en place de l'outil de construction. Si Binutils échoue à la construction, c'est une indication d'un problème avec les installations precedentes de Binutils, GCC ou Glibc.