Subversion Repositories svn LFS-FR

Rev

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