Subversion Repositories svn LFS-FR

Rev

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>&nbsp;:</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>&nbsp;:</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&amp;@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)&nbsp;:</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 &amp;&amp;
74
find ${GCC_INCLUDEDIR}/* -maxdepth 0 -xtype d -exec rm -rvf '{}' \; &amp;&amp;
75
rm -vf `grep -l "DO NOT EDIT THIS FILE" ${GCC_INCLUDEDIR}/*` &amp;&amp;
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&nbsp;:</para>
475 gleu 83
 
84
<screen><userinput>echo 'main(){}' &gt; 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&nbsp;:</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&nbsp;::</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>