Subversion Repositories svn LFS-FR

Rev

Rev 1344 | Go to most recent revision | 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
 
522 gleu 8
<sect1 id="ch-tools-glibc" role="wrap">
590 gleu 9
  <?dbhtml filename="glibc.html"?>
358 guillaume 10
 
602 texou 11
  <sect1info condition="script">
12
    <productname>glibc</productname>
13
    <productnumber>&glibc-version;</productnumber>
14
    <address>&glibc-url;</address>
15
  </sect1info>
16
 
590 gleu 17
  <title>Glibc-&glibc-version;</title>
358 guillaume 18
 
590 gleu 19
  <indexterm zone="ch-tools-glibc">
20
    <primary sortas="a-Glibc">Glibc</primary>
21
    <secondary>outils</secondary>
22
  </indexterm>
358 guillaume 23
 
590 gleu 24
  <sect2 role="package">
25
    <title/>
439 guillaume 26
 
1152 jmengual 27
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
590 gleu 28
    href="../chapter06/glibc.xml"
29
    xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
475 gleu 30
 
590 gleu 31
    <segmentedlist>
32
      <segtitle>&buildtime;</segtitle>
33
      <segtitle>&diskspace;</segtitle>
475 gleu 34
 
590 gleu 35
      <seglistitem>
36
        <seg>&glibc-ch5-sbu;</seg>
37
        <seg>&glibc-ch5-du;</seg>
38
      </seglistitem>
39
    </segmentedlist>
439 guillaume 40
 
590 gleu 41
  </sect2>
439 guillaume 42
 
590 gleu 43
  <sect2 role="installation">
44
    <title>Installation de Glibc</title>
439 guillaume 45
 
687 texou 46
   <para>La documentation de Glibc recommande de construire Glibc en dehors du
590 gleu 47
    répertoire des sources, c'est-à-dire dans un répertoire dédié&nbsp;:</para>
555 gleu 48
 
602 texou 49
<screen><userinput remap="pre">mkdir -v ../glibc-build
439 guillaume 50
cd ../glibc-build</userinput></screen>
51
 
602 texou 52
    <para>Glibc ne supportant plus i386, ses développeurs disent d'utiliser
53
    le commutateur du compilateur <parameter>-march=i486</parameter> lorsqu'on
54
    le compile pour des machines x86. On peut faire cela de plusieurs manières,
55
    mais des tests montrent que la meilleure place pour le commutateur est à
667 texou 56
    l'intérieur de la variable de compilation <quote>CFLAGS</quote>. Au lieu de
602 texou 57
    remplacer entièrement ce que le système de compilation interne de
58
    Glibc utilise pour CFLAGS, ajoutez le nouveau commutateur au contenu
59
    existant de CFLAGS en utilisant le fichier spécial
60
    <filename>configparms</filename>. Le commutateur -mtune=native est également
61
    requis pour réinitialiser une valeur raisonnable pour -mtune, laquelle est
62
    modifiée lors du paramétrage de -march.</para>
63
 
762 texou 64
<screen><userinput remap="configure">case `uname -m` in
65
  i?86) echo "CFLAGS += -march=i486 -mtune=native" > configparms ;;
730 texou 66
esac</userinput></screen>
602 texou 67
 
730 texou 68
 
590 gleu 69
    <para>Ensuite, préparez la compilation de Glibc&nbsp;:</para>
439 guillaume 70
 
602 texou 71
<screen><userinput remap="configure">../glibc-&glibc-version;/configure --prefix=/tools \
731 texou 72
    --host=$LFS_TGT --build=$(../glibc-&glibc-version;/scripts/config.guess) \
555 gleu 73
    --disable-profile --enable-add-ons \
1168 jmengual 74
    --enable-kernel=2.6.22.5 --with-headers=/tools/include \
731 texou 75
    libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes</userinput></screen>
439 guillaume 76
 
590 gleu 77
    <variablelist>
78
      <title>Voici la signification des options de configure&nbsp;:</title>
439 guillaume 79
 
590 gleu 80
      <varlistentry>
731 texou 81
        <term><parameter>--host=$LFS_TGT, --build=$(../glibc-&glibc-version;/scripts/config.guess)</parameter></term>
82
        <listitem>
83
          <para>L'effet combiné de ces commutateurs est que le système de
84
          construction de Glibc se configure pour se compiler de manière
85
          croisée en 1tilisant l'éditeur de liens croisé et le compilateur
86
          croisé dans <filename class="directory">/tools</filename>.</para>
87
        </listitem>
88
      </varlistentry>
89
      <varlistentry>
590 gleu 90
        <term><parameter>--disable-profile</parameter></term>
91
        <listitem>
92
          <para>Ceci construit les bibliothèques sans les informations de
93
          profilage. Enlevez cette option si le profilage sur les outils
94
          temporaires est nécessaire.</para>
95
        </listitem>
96
      </varlistentry>
439 guillaume 97
 
590 gleu 98
      <varlistentry>
99
        <term><parameter>--enable-add-ons</parameter></term>
100
        <listitem>
667 texou 101
          <para>Ceci indique à Glibc d'utiliser le composant NPTL comme
590 gleu 102
          bibliothèque de threads.</para>
103
        </listitem>
104
      </varlistentry>
439 guillaume 105
 
590 gleu 106
      <varlistentry>
1173 jmengual 107
        <term><parameter>--enable-kernel=2.6.22.5</parameter></term>
590 gleu 108
        <listitem>
109
          <para>Ceci indique à Glibc de compiler la bibliothèque avec le support
858 texou 110
          des noyaux Linux 2.6.18 et supérieurs. Les environnements pour des noyaux plus anciens ne sont pas activés.</para>
590 gleu 111
        </listitem>
112
      </varlistentry>
439 guillaume 113
 
590 gleu 114
      <varlistentry>
731 texou 115
        <term><parameter>--with-headers=/tools/include</parameter></term>
590 gleu 116
        <listitem>
731 texou 117
          <para>Ceci dit à Glibc de se compiler contre les en-têtes récemment
118
          installées dans le répertoire tools, afin qu'il connaisse exactement les
119
          fonctionnalités du noyau et puisse s'optimiser en conséquence.</para>
590 gleu 120
        </listitem>
121
      </varlistentry>
439 guillaume 122
 
590 gleu 123
      <varlistentry>
731 texou 124
        <term><parameter>libc_cv_forced_unwind=yes</parameter></term>
590 gleu 125
        <listitem>
1112 jmengual 126
          <para>L'éditeur de liens installé lors de
127
          <xref linkend="ch-tools-binutils-pass1"/> était construit de façon croisée
128
          et, dans cet état, il ne peut pas être utilisé tant que Glibc n'a pas été
129
          installé. Cela signifie que le test de configure du support
130
          force-unwind échouera puisqu'il croit avoir à faire à un éditeur de liens
131
          opérationnel. La variable libc_cv_forced_unwind=yes est
132
          passée afin d'indiquer à <command>configure</command> que le
133
          support de force-unwind est disponible sans qu'il n'ait à lancer le test.</para>
590 gleu 134
        </listitem>
135
      </varlistentry>
522 gleu 136
 
590 gleu 137
      <varlistentry>
731 texou 138
        <term><parameter>libc_cv_c_cleanup=yes</parameter></term>
590 gleu 139
        <listitem>
1112 jmengual 140
          <para>De la même façon, nous passons libc_cv_c_cleanup=yes au script
141
          <command>configure</command> afin que le test soit sauté
142
          et que le support de gestion du nettoyage C soit configuré.</para>
590 gleu 143
        </listitem>
144
      </varlistentry>
522 gleu 145
 
590 gleu 146
    </variablelist>
522 gleu 147
 
590 gleu 148
    <para>Lors de cette étape, le message d'avertissement suivant peut
149
    apparaître&nbsp;:</para>
150
 
151
    <blockquote>
152
<screen><computeroutput>configure: WARNING:
153
*** These auxiliary programs are missing or
522 gleu 154
*** incompatible versions: msgfmt
439 guillaume 155
*** some features will be disabled.
590 gleu 156
*** Check the INSTALL file for required versions.</computeroutput></screen>
157
    </blockquote>
439 guillaume 158
 
590 gleu 159
    <para>Le programme <command>msgfmt</command>, manquant ou incompatible, ne
936 jmengual 160
    pose généralement pas de problème. Ce programme <command>msgfmt</command>
161
    fait partie du paquet Gettext que la distribution hôte
590 gleu 162
    devrait fournir. Si <command>msgfmt</command> est présent mais semble
163
    incompatible, mettez à jour le paquet Gettext du système hôte ou continuez sans
164
    et voyez si la suite de tests continue son exécution sans problèmes.</para>
439 guillaume 165
 
1347 jmengual 166
    <para>Le paquet Glibc se construit en deux phases. Dans la première, seules
167
    les bibliothèques sont compilées avec notre <parameter>-fPIC</parameter>
168
    de GCC activé. Dans la seconde phase, les programmes sont compilés avec
169
    les durcissements supplémentaires.</para>
439 guillaume 170
 
1347 jmengual 171
    <para>Préparez le fichier <filename>configparms</filename> pour construire
172
    les bibliothèques de Glibc&nbsp;:</para>
173
 
174
<screen><userinput remap="configure">cat &gt;&gt; configparms &lt;&lt; "EOF"
175
<literal>build-programs=no
176
LDFLAGS.so += -Wl,--warn-shared-textrel,--fatal-warnings</literal>
177
EOF</userinput></screen>
178
 
179
    <para>Compilez les bibliothèques&nbsp;:</para>
180
 
602 texou 181
<screen><userinput remap="make">make</userinput></screen>
1347 jmengual 182
 
183
    <para>Dans cette prochaine étape, les options de durcissement sont ajoutées
184
    aux options du compilateur. Le programme <command>sln</command> est lié
185
    de manière statique, donc l'option <parameter>-fPIE</parameter> est inversée
186
    par l'option <parameter>-fno-PIE</parameter>. La variable
187
    <parameter>+link</parameter> est redéfinie pour lier les programmes à
188
    <parameter>-pie</parameter>, et elle se comporte essentiellement comme
189
    <parameter>+link-pie</parameter> qui se trouve dans le fichier
190
    <filename>Makeconfig</filename>, mais avec en plus
191
    <parameter>--warn-shared-textrel --fatal-warnings</parameter> pour nous
192
    avertir si les programmes n'ont pas été compilés correctement.</para>
439 guillaume 193
 
1347 jmengual 194
    <para>Préparez le fichier <filename>configparms</filename> pour construire
195
    les programmes de Glibc&nbsp;:</para>
196
 
197
<screen><userinput remap="configure">cat &gt; configparms &lt;&lt; "EOF"
198
<literal>CC += -fPIE -fstack-protector-all -D_FORTIFY_SOURCE=2
199
CXX += -fPIE -fstack-protector-all -D_FORTIFY_SOURCE=2
200
CFLAGS-sln.c += -fno-PIC -fno-PIE
201
+link = $(CC) -pie -Wl,-O1 -nostdlib -nostartfiles -o $@ \
202
    $(sysdep-LDFLAGS) $(config-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
203
    $(combreloc-LDFLAGS) $(relro-LDFLAGS) $(hashstyle-LDFLAGS) \
204
    -Wl,-z,now -Wl,--warn-shared-textrel,--fatal-warnings \
205
    $(addprefix $(csu-objpfx),S$(start-installed-name)) \
206
    $(+preinit) $(+prectorS) \
207
    $(filter-out $(addprefix $(csu-objpfx),start.o \
208
    S$(start-installed-name))\
209
    $(+preinit) $(link-extra-libs) \
210
    $(common-objpfx)libc% $(+postinit),$^) \
211
    $(link-extra-libs) $(link-libc) $(+postctorS) $(+postinit)</literal>
212
EOF
213
case `uname -m` in
214
  i?86) echo "CFLAGS += -march=i486 -mtune=native" &gt;&gt; configparms ;;
215
esac</userinput></screen>
216
 
217
    <para>Compilez les programmes&nbsp;:</para>
218
 
219
<screen><userinput remap="make">make</userinput></screen>
220
 
696 texou 221
    <para>Ce paquet est fourni avec une suite de test, cependant vous ne pouvez
222
    pas l'exécuter à ce moment car nous n'avons pas encore de compilateur C++.</para>
439 guillaume 223
 
590 gleu 224
    <note>
847 texou 225
      <para>La suite de tests exige aussi que des données de locale soient installées afin de s'exécuter avec succès. Les
987 jmengual 226
      données de locale fournissent au système des informations sur la date, l'heure et les formats normaux acceptés et fournis
847 texou 227
      par les outils systèmes. Si les suites de tests ne seront pas exécutés dans ce chapitre
987 jmengual 228
      (suivant ainsi notre recommandation), il y a peu intérêt à installer les
590 gleu 229
      locales maintenant. Les bonnes locales seront installées dans le chapitre
230
      suivant.
231
      Néanmoins, pour installer les locales Glibc, utilisez les instructions de
232
      la section <xref linkend="ch-system-glibc" role="."/></para>
233
    </note>
439 guillaume 234
 
847 texou 235
    <para>Installez le paquet&nbsp;:</para>
236
 
237
<screen><userinput remap="install">make install</userinput></screen>
238
 
590 gleu 239
  </sect2>
475 gleu 240
 
590 gleu 241
  <sect2 role="content">
242
    <title/>
475 gleu 243
 
590 gleu 244
    <para>Les détails sur ce paquet sont situés dans
245
    <xref linkend="contents-glibc" role="."/></para>
439 guillaume 246
 
590 gleu 247
  </sect2>
439 guillaume 248
 
358 guillaume 249
</sect1>