Rev 670 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
475 | gleu | 1 | <?xml version="1.0" encoding="ISO-8859-1"?> |
590 | gleu | 2 | <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" |
3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ |
||
475 | gleu | 4 | <!ENTITY % general-entities SYSTEM "../general.ent"> |
5 | %general-entities; |
||
6 | ]> |
||
590 | gleu | 7 | |
475 | gleu | 8 | <sect1 id="ch-tools-adjusting"> |
590 | gleu | 9 | <?dbhtml filename="adjusting.html"?> |
475 | gleu | 10 | |
590 | gleu | 11 | <title>Ajuster l'ensemble d'outils</title> |
475 | gleu | 12 | |
590 | gleu | 13 | <para>Maintenant que les bibliothèques C temporaires ont été installées, tous |
14 | les outils compilés dans le reste de ce chapitre doivent être liés avec ces |
||
15 | bibliothèques. Pour accomplir cela, l'éditeur de liens et le fichier specs du |
||
16 | compilateur doivent être ajustés.</para> |
||
475 | gleu | 17 | |
590 | gleu | 18 | <para>L'éditeur de liens ajusté (à la fin de la première passe de Binutils) |
670 | texou | 19 | doit être déplacé afin d'être trouvé et utilisé convenablement. D'abord, |
20 | sauvegardez l'éditeur de liens original puis remplacez-le par celui qui a |
||
21 | été ajusté. Nous créerons aussi un lien pour son équivalent dans |
||
590 | gleu | 22 | <filename class="directory">/tools/$(gcc -dumpmachine)/bin</filename> :</para> |
475 | gleu | 23 | |
590 | gleu | 24 | <screen><userinput>mv -v /tools/bin/{ld,ld-old} |
25 | mv -v /tools/$(gcc -dumpmachine)/bin/{ld,ld-old} |
||
26 | mv -v /tools/bin/{ld-new,ld} |
||
27 | ln -sv /tools/bin/ld /tools/$(gcc -dumpmachine)/bin/ld</userinput></screen> |
||
475 | gleu | 28 | |
590 | gleu | 29 | <para>À partir de ce moment, tout sera lié uniquement avec les bibliothèques |
30 | comprises dans <filename class="directory">/tools/lib</filename>.</para> |
||
475 | gleu | 31 | |
590 | gleu | 32 | <para>La prochaine tâche est de modifier le fichier specs de GCC pour qu'il |
33 | pointe vers le nouvel éditeur de liens. Ceci se fait en plaçant le fichier |
||
34 | <quote>specs</quote> de GCC à un endroit où GCC va le chercher par défaut. |
||
35 | Un simple script <command>sed</command> modifie alors l'éditeur de liens |
||
36 | dynamique que GCC utilisera.</para> |
||
475 | gleu | 37 | |
706 | texou | 38 | <para>Par souci de précision, il est recommandé que la commande |
39 | suivante soit copiée/collée. |
||
590 | gleu | 40 | Assurez-vous d'inspecter visuellement le fichier specs pour vérifier |
41 | que toutes les occurrences de <quote>/lib/ld-linux.so.2</quote> ont |
||
42 | été remplacées par <quote>/tools/lib/ld-linux.so.2</quote> :</para> |
||
475 | gleu | 43 | |
590 | gleu | 44 | <important> |
45 | <para>Au cas où le nom de l'éditeur de liens de la plateforme de |
||
46 | travail est autre que <filename class="libraryfile">ld-linux.so.2</filename>, |
||
47 | remplacez <quote>ld-linux.so.2</quote> par le nom de l'éditeur de liens de |
||
48 | votre plateforme dans les commandes ci-dessus. Référez-vous à |
||
49 | <xref linkend="ch-tools-toolchaintechnotes" role=","/> si |
||
50 | nécessaire</para> |
||
51 | </important> |
||
52 | |||
522 | gleu | 53 | <!-- Ampersands are needed to allow copy and paste --> |
590 | gleu | 54 | <screen><userinput>gcc -dumpspecs | sed 's@^/lib/ld-linux.so.2@/tools&@g' \ |
55 | > `dirname $(gcc -print-libgcc-file-name)`/specs</userinput></screen> |
||
475 | gleu | 56 | |
590 | gleu | 57 | <para>Pendant la procédure de construction, GCC exécute un script |
58 | (<command>fixincludes</command>) qui parcourt le système pour déterminer les |
||
59 | fichiers d'en-tête qui pourraient nécessiter une réparation (ils pourraient |
||
60 | contenir des erreurs de syntaxe, par exemple), et qui installe les versions |
||
61 | corrigées dans un répertoire include autonome. Il se peut que, au terme de ce |
||
62 | processus, certains fichiers d'en-tête du système hôte se trouvent placés |
||
63 | dans le répertoire autonome include de GCC. Comme le reste de ce chapitre |
||
64 | n'exige que les en-têtes de GCC et de Glibc, qui ont désormais été installées, |
||
65 | toute en-tête <quote>corrigée</quote> peut être supprimée en toute sécurité. Cela |
||
66 | permet d'éviter toute pollution de l'environnement de construction par les |
||
67 | en-têtes du système hôte. Lancez les commandes suivantes pour supprimer |
||
68 | les fichiers d'en-tête dans le répertoire autonome include de GCC (il se |
||
69 | peut que vous trouviez plus facile de copier-coller les commandes plutôt que |
||
70 | de les saisir à la main, du fait de leur longueur) :</para> |
||
475 | gleu | 71 | |
590 | gleu | 72 | <!-- && used to ease copy and pasting --> |
73 | <screen><userinput>GCC_INCLUDEDIR=`dirname $(gcc -print-libgcc-file-name)`/include && |
||
74 | find ${GCC_INCLUDEDIR}/* -maxdepth 0 -xtype d -exec rm -rvf '{}' \; && |
||
75 | rm -vf `grep -l "DO NOT EDIT THIS FILE" ${GCC_INCLUDEDIR}/*` && |
||
76 | unset GCC_INCLUDEDIR</userinput></screen> |
||
475 | gleu | 77 | |
590 | gleu | 78 | <caution> |
79 | <para>Il est impératif à ce moment de s'arrêter et de s'assurer que les |
||
80 | fonctions basiques (compilation et édition des liens) du nouvel ensemble |
||
81 | d'outils fonctionnent comme attendu. Pour réaliser une vérification de |
||
82 | propreté, lancez les commandes suivantes :</para> |
||
475 | gleu | 83 | |
84 | <screen><userinput>echo 'main(){}' > dummy.c |
||
85 | cc dummy.c |
||
86 | readelf -l a.out | grep ': /tools'</userinput></screen> |
||
87 | |||
590 | gleu | 88 | <para>Si tout fonctionne correctement, il ne devrait pas y avoir d'erreurs et |
89 | la sortie de la dernière commande sera de la forme :</para> |
||
475 | gleu | 90 | |
590 | gleu | 91 | <screen><computeroutput>[Requesting program interpreter: |
522 | gleu | 92 | /tools/lib/ld-linux.so.2]</computeroutput></screen> |
475 | gleu | 93 | |
590 | gleu | 94 | <para>Notez que <filename class="directory">/tools/lib</filename> |
95 | apparaît comme préfixe de l'éditeur de liens dynamique.</para> |
||
475 | gleu | 96 | |
590 | gleu | 97 | <para>Si l'affichage diffère ou s'il n'y a aucun affichage, alors |
98 | quelque chose ne se passe pas bien. Enquêtez et tracez vos étapes pour |
||
99 | trouver où se cache le problème et comment le corriger. Ce problème doit |
||
100 | être corrigé avant de continuer. Tout d'abord, relancez la vérification |
||
101 | de propreté en utilisant |
||
102 | <command>gcc</command> au lieu de <command>cc</command>. Si cela fonctionne, |
||
103 | le lien symbolique <filename class="symlink">/tools/bin/cc</filename> est |
||
104 | manquant. Lisez de nouveau <xref linkend="ch-tools-gcc-pass1" role=","/> et |
||
105 | installez le lien symbolique. |
||
106 | Ensuite, assurez-vous que le <envar>PATH</envar> est correct. Ceci se |
||
107 | vérifie en lançant <command>echo $PATH</command> et en vérifiant que |
||
108 | <filename class="directory">/tools/bin</filename> est en tête de la |
||
109 | liste. Si le <envar>PATH</envar> est mauvais, cela pourrait signifier |
||
110 | que vous n'êtes pas connecté en tant qu'utilisateur |
||
111 | <systemitem class="username">lfs</systemitem> ou que quelque chose s'est mal passé dans |
||
112 | <xref linkend="ch-tools-settingenviron" role="."/>. Une autre possibilité |
||
113 | est que quelque chose a pu mal se passer avec la correction du fichier specs |
||
114 | ci-dessus. Dans ce cas, refaites la modification de ce fichier en vous |
||
115 | assurant de copier/coller les commandes.</para> |
||
475 | gleu | 116 | |
590 | gleu | 117 | <para>Une fois que tout va bien, nettoyez les fichiers de test ::</para> |
475 | gleu | 118 | |
561 | gleu | 119 | <screen><userinput>rm -v dummy.c a.out</userinput></screen> |
120 | |||
590 | gleu | 121 | </caution> |
475 | gleu | 122 | |
590 | gleu | 123 | <note><para>Construire TCL dans la prochaine section servira comme vérification |
124 | supplémentaire de la bonne mise en place de l'outil de construction. Si TCL |
||
125 | échoue à la construction, c'est une indication d'un problème avec l'installation |
||
126 | de Binutils, GCC ou Glibc, mais pas avec TCL lui-même.</para></note> |
||
475 | gleu | 127 | |
128 | </sect1> |