Subversion Repositories svn LFS-FR

Rev

Rev 1344 | 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"?>
591 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
]>
591 gleu 7
 
475 gleu 8
<sect1 id="ch-system-readjusting">
591 gleu 9
  <?dbhtml filename="readjusting.html"?>
475 gleu 10
 
1111 jmengual 11
  <title>Ré-ajustement de la chaîne d'outils</title>
475 gleu 12
 
591 gleu 13
  <para>Maintenant que les bibliothèques C finales ont été
1111 jmengual 14
  installées, il est temps d'ajuster de nouveau la chaîne d'outils. L'ensemble
591 gleu 15
  d'outils sera ajusté de façon à ce qu'il lie tout programme nouvellement
16
  compilé avec ces nouvelles bibliothèques. C'est le même processus que celui
17
  utilisé dans la phase d'<quote>ajustement</quote> au début du
18
  <xref linkend="chapter-temporary-tools"/>, avec les ajustements inversés. Dans
19
  <xref linkend="chapter-temporary-tools"/>, l'ensemble était passé des répertoires
20
  <filename class="directory">/{,usr/}lib</filename> de l'hôte dans le nouveau
21
  répertoire <filename class="directory">/tools/lib</filename>. Maintenant,
22
  l'ensemble sera guidé du même répertoire <filename class="directory">/tools/lib</filename>
23
   vers les répertoires <filename class="directory">/{,usr/}lib</filename>.</para>
475 gleu 24
 
667 texou 25
  <para>D'abord, sauvegardez l'éditeur de liens de
591 gleu 26
  <filename class="directory">/tools</filename>, et remplacez-le par l'éditeur de
27
  lien ajusté que nous avons fait au chapitre 5. Nous créerons aussi
28
  un lien vers son équivalent dans
29
  a <filename class="directory">/tools/$(gcc
30
  -dumpmachine)/bin</filename>&nbsp;:</para>
475 gleu 31
 
591 gleu 32
<screen><userinput>mv -v /tools/bin/{ld,ld-old}
33
mv -v /tools/$(gcc -dumpmachine)/bin/{ld,ld-old}
34
mv -v /tools/bin/{ld-new,ld}
35
ln -sv /tools/bin/ld /tools/$(gcc -dumpmachine)/bin/ld</userinput></screen>
475 gleu 36
 
591 gleu 37
  <para>Puis, modifiez le fichier des specs GCC afin qu'il pointe vers
732 texou 38
  le nouvel éditeur de liens dynamiques. La suppression simple de tous les
39
  exemples de <quote>/tools</quote> devrait nous  laisser uniquement le bon
40
  chemin sur l'éditeur de liens dynamique. Ajustez aussi  le fichier de specs
41
  pour que GCC sache où trouver les en-têtes corrects et les fichiers de
42
  démarrage de Glibc. Une commande
591 gleu 43
  <command>sed</command> fait cela&nbsp;:</para>
475 gleu 44
 
730 texou 45
<screen><userinput>gcc -dumpspecs | sed -e 's@/tools@@g' \
591 gleu 46
    -e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}' \
47
    -e '/\*cpp:/{n;s@$@ -isystem /usr/include@}' &gt; \
48
    `dirname $(gcc --print-libgcc-file-name)`/specs</userinput></screen>
475 gleu 49
 
591 gleu 50
  <para>C'est une bonne idée d'examiner visuellement le fichier de specs
51
  pour vérifier que le changement voulu a bien été effectué.</para>
475 gleu 52
 
591 gleu 53
  <para>Il est impératif à ce moment d'arrêter et de vous assurer que les
54
  fonctions basiques (compilation et édition des liens) de l'ensemble des
55
  outils ajusté fonctionnent comme attendu. Pour cela, réalisez une petite
56
  vérification&nbsp;:</para>
475 gleu 57
 
591 gleu 58
<screen os="a"><userinput>echo 'main(){}' &gt; dummy.c
59
cc dummy.c -v -Wl,--verbose &amp;&gt; dummy.log
60
readelf -l a.out | grep ': /lib'</userinput></screen>
475 gleu 61
 
591 gleu 62
  <para os="b">Si tout fonctionne correctement, il ne devrait pas y avoir d'erreurs et
63
  la sortie de la commande sera (avec des différences spécifiques aux plateformes
64
  dans le nom de l'éditeur de liens)&nbsp;:</para>
555 gleu 65
 
591 gleu 66
<screen os="c"><computeroutput>[Requesting program interpreter: /lib/ld-linux.so.2]</computeroutput></screen>
475 gleu 67
 
1080 jmengual 68
  <para>Remarquez que <filename class="directory">/lib</filename> est maintenant le
591 gleu 69
  préfixe de notre éditeur de liens.</para>
475 gleu 70
 
591 gleu 71
  <para os="d">Maintenant, assurez-vous que nous utilisons les
72
  bons fichiers de démarrage&nbsp;:</para>
475 gleu 73
 
591 gleu 74
<screen os="e"><userinput>grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log</userinput></screen>
475 gleu 75
 
591 gleu 76
  <para os="f">Si tout fonctionne correctement, il ne devrait pas y avoir d'erreurs
77
  et la sortie de la dernière commande sera&nbsp;:</para>
475 gleu 78
 
1347 jmengual 79
<screen><computeroutput>/usr/lib/crti.o succeeded
591 gleu 80
/usr/lib/crtn.o succeeded</computeroutput></screen>
475 gleu 81
 
591 gleu 82
  <para os="g">Vérifiez que le compilateur cherche les bons fichiers
83
  d'en-tête&nbsp;:</para>
475 gleu 84
 
591 gleu 85
<screen><userinput>grep -B1 '^ /usr/include' dummy.log</userinput></screen>
475 gleu 86
 
591 gleu 87
  <para os="h">Cette commande devrait réussir avec la sortie suivante&nbsp;:</para>
88
 
89
<screen><computeroutput>#include &lt;...&gt; search starts here:
90
 /usr/include</computeroutput></screen>
91
 
92
  <para os="i">Puis, vérifiez que le nouvel éditeur de liens est utilisé
93
  avec les bons chemins de recherche&nbsp;:</para>
94
 
95
<screen os="j"><userinput>grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'</userinput></screen>
96
 
97
  <para os="k">Si tout fonctionne correctement, il ne devrait pas y avoir d'erreurs
730 texou 98
  et la sortie de la dernière commande sera (selon la triplette cible
99
  spécifique à chaque plateforme)&nbsp;:</para>
591 gleu 100
 
101
<screen><computeroutput>SEARCH_DIR("/tools/i686-pc-linux-gnu/lib")
102
SEARCH_DIR("/usr/lib")
103
SEARCH_DIR("/lib");</computeroutput></screen>
104
 
105
  <para os="l">Ensuite, assurez-vous que nous utilisons la bonne libc&nbsp;:</para>
106
 
762 texou 107
<screen os="m"><userinput>grep "/lib.*/libc.so.6 " dummy.log</userinput></screen>
591 gleu 108
 
109
  <para os="n">Si tout fonctionne correctement, il ne devrait pas y avoir d'erreur
730 texou 110
    et la sortie de la dernière commande sera (selon la triplette cible
111
  spécifique à chaque plateforme)&nbsp;:</para>
591 gleu 112
 
113
<screen os="o"><computeroutput>attempt to open /lib/libc.so.6 succeeded</computeroutput></screen>
114
 
115
  <para os="p">Pour finir, assurez-vous que GCC utilise le bon éditeur de liens dynamiques&nbsp;:</para>
116
 
117
<screen os="q"><userinput>grep found dummy.log</userinput></screen>
118
 
119
  <para os="r">Si tout fonctionne correctement, il ne devrait pas y avoir d'erreurs et
120
  la sortie de la commande sera (avec des différences spécifiques aux plateformes
730 texou 121
  dans le nom de l'éditeur de liens et un répertoire lib64 sur les hôtes
122
  64 bits)&nbsp;:</para>
591 gleu 123
 
124
<screen os="s"><computeroutput>found ld-linux.so.2 at /lib/ld-linux.so.2</computeroutput></screen>
125
 
126
  <para os="t">Si la sortie n'apparaît pas comme montré ci-dessus ou
127
  qu'elle n'apparaît pas du tout, alors quelque chose ne va vraiment pas.
667 texou 128
  Enquêtez et retracez les étapes pour savoir d'où vient le problème et comment le
591 gleu 129
  corriger. La raison la plus probable est que quelque chose s'est mal passé lors
130
  de la modification du fichier specs ci-dessus. Tout problème devra être résolu
131
  avant de continuer le processus.</para>
132
 
133
  <para os="u">Une fois que tout fonctionne correctement, nettoyez les fichiers
134
  tests&nbsp;:</para>
135
 
136
<screen os="v"><userinput>rm -v dummy.c a.out dummy.log</userinput></screen>
137
 
475 gleu 138
</sect1>