Subversion Repositories svn LFS-FR

Rev

Rev 1344 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
527 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-gcc-pass1" role="wrap">
590 gleu 9
  <?dbhtml filename="gcc-pass1.html"?>
358 guillaume 10
 
602 texou 11
<sect1info condition="script">
12
     <productname>gcc</productname>
13
     <productnumber>&gcc-version;</productnumber>
14
     <address>&gcc-url;</address>
15
</sect1info>
16
 
590 gleu 17
  <title>GCC-&gcc-version; - Passe 1</title>
358 guillaume 18
 
590 gleu 19
  <indexterm zone="ch-tools-gcc-pass1">
20
    <primary sortas="a-GCC">GCC</primary>
21
    <secondary>outils, passe 1</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/gcc.xml"
29
    xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
475 gleu 30
 
590 gleu 31
    <segmentedlist>
32
      <segtitle>&buildtime;</segtitle>
33
      <segtitle>&diskspace;</segtitle>
522 gleu 34
 
590 gleu 35
      <seglistitem>
36
        <seg>&gcc-ch5p1-sbu;</seg>
37
        <seg>&gcc-ch5p1-du;</seg>
38
      </seglistitem>
39
    </segmentedlist>
439 guillaume 40
 
590 gleu 41
  </sect2>
439 guillaume 42
 
590 gleu 43
  <sect2 role="installation">
731 texou 44
    <title>Installation de GCC croisé</title>
439 guillaume 45
 
1149 jmengual 46
    <para>GCC exige maintenant les paquets GMP, MPFR et MPC. Comce il se peut que
677 texou 47
    ces paquets ne soient pas inclus dans votre distribution hôte, ils vont
835 texou 48
    être compilés avec GCC&nbsp;:</para>
49
 
696 texou 50
<screen><userinput remap="pre">tar -jxf ../mpfr-&mpfr-version;.tar.bz2
835 texou 51
mv -v mpfr-&mpfr-version; mpfr
696 texou 52
tar -jxf ../gmp-&gmp-version;.tar.bz2
1149 jmengual 53
mv -v gmp-&gmp-version; gmp
54
tar -zxf ../mpc-&mpc-version;.tar.gz
55
mv -v mpc-&mpc-version; mpc</userinput></screen>
677 texou 56
 
1347 jmengual 57
    <para>Il faut activer le paramètre <parameter>-fPIC</parameter> par défaut
58
    à cette étape, afin que Glibc détecte plus tard dans ce chapitre un
59
    compilateur PIC. Glibc activera du code selon que le compilateur est PIC
60
    ou pas.</para>
61
 
62
    <para>Modifiez GCC pour que <parameter>-fPIC</parameter> soit par défaut&nbsp;:</para>
63
 
64
<screen><userinput remap="pre">cp -v gcc/config/i386/linux.h{,.orig}
65
sed 's/^\(#define CC1_SPEC.*\)\("\)$/\1 %{fno-pic|fno-PIC|fpic|fPIC:;:-fPIC}\2/' \
66
    gcc/config/i386/linux.h.orig > gcc/config/i386/linux.h
67
cp -v gcc/config/i386/x86-64.h{,.orig}
68
sed 's/^\(#define CC1_SPEC.*\)\("\)$/\1 %{fno-pic|fno-PIC|fpic|fPIC:;:-fPIC}\2/' \
69
    gcc/config/i386/x86-64.h.orig > gcc/config/i386/x86-64.h</userinput></screen>
70
 
590 gleu 71
    <para>La documentation de GCC recommande de ne pas construire GCC dans le
72
    répertoire des sources mais dans un répertoire de construction dédié&nbsp;:</para>
73
 
602 texou 74
<screen><userinput remap="pre">mkdir -v ../gcc-build  
439 guillaume 75
cd ../gcc-build</userinput></screen>
76
 
590 gleu 77
    <para>Préparez la compilation de GCC&nbsp;:</para>
439 guillaume 78
 
731 texou 79
<screen><userinput remap="configure">../gcc-&gcc-version;/configure \
80
    --target=$LFS_TGT --prefix=/tools \
81
    --disable-nls --disable-shared --disable-multilib \
82
    --disable-decimal-float --disable-threads \
83
    --disable-libmudflap --disable-libssp \
1172 jmengual 84
    --disable-libgomp --enable-languages=c \
1193 jmengual 85
    --with-gmp-include=$(pwd)/gmp --with-gmp-lib=$(pwd)/gmp/.libs \
86
    --without-ppl --without-cloog</userinput></screen>
1172 jmengual 87
 
590 gleu 88
    <variablelist>
89
      <title>Voici la signification des options de configure&nbsp;:</title>
439 guillaume 90
 
590 gleu 91
      <varlistentry>
696 texou 92
        <term><parameter>--disable-shared</parameter></term>
590 gleu 93
        <listitem>
696 texou 94
          <para>Ce paramètre oblige GCC à lier ses bibliothèques internes de
95
          manière statique. On procède ainsi pour éviter les problèmes avec
96
          le système hôte.</para>
590 gleu 97
        </listitem>
98
      </varlistentry>
439 guillaume 99
 
590 gleu 100
      <varlistentry>
731 texou 101
        <term><parameter>--disable-decimal-float, --disable-threads, --disable-libmudflap, --disable-libssp, --disable-libgomp</parameter></term>
709 texou 102
        <listitem>
731 texou 103
          <para>Ces paramètres désactivent le support de l'extension ayant un
104
          point flottant décimal, du threading, respectivement de
105
          libmudflap, libssp et libgomp. Ces fonctionnalités ne parviendront
106
          pas à se construire lors de la construction d'un compilateur
107
          croisé et ne sont pas nécessaires pour la tâche de compilation
108
          croisée de la libc temporaire.</para>
709 texou 109
        </listitem>
110
      </varlistentry>
111
      <varlistentry>
731 texou 112
        <term><parameter>--disable-multilib</parameter></term>
590 gleu 113
        <listitem>
731 texou 114
          <para>Sur du x86_64, LFS ne supporte pas encore une configuration
115
          multilib (plusieurs bibliothèques). Ce paramètre n'a pas
116
          d'importance pour x86.</para>
590 gleu 117
        </listitem>
118
      </varlistentry>
730 texou 119
      <varlistentry>
731 texou 120
        <term><parameter>--enable-languages=c</parameter></term>
730 texou 121
        <listitem>
731 texou 122
          <para>Cette option nous assure que seul le compilateur C sera
123
          construit. C'est le seul langage actuellement nécessaire.</para>
730 texou 124
        </listitem>
125
      </varlistentry>
1172 jmengual 126
 
127
      <varlistentry>
128
        <term><parameter>--with-gmp-include=...</parameter></term>
129
        <listitem>
130
          <para>Cette option dit à GCC où se situent les en-têtes de GMP.</para>
131
        </listitem>
132
      </varlistentry>
439 guillaume 133
 
1172 jmengual 134
      <varlistentry>
135
        <term><parameter>--with-gmp-lib=...</parameter></term>
136
        <listitem>
137
          <para>Cette option dit à GCC où se trouve la bibliothèque de GMP.</para>
138
        </listitem>
139
      </varlistentry>
140
 
1193 jmengual 141
      <varlistentry>
142
        <term><parameter>--without-ppl, --without-cloog</parameter></term>
143
        <listitem>
144
          <para>Ces paramètres empêche GCC de se construire contre les bibliothèques
145
          PPL et CLooG qui peuvent être présentes sur le système hôte, mais
146
          qui ne seront pas disponibles dans l'environnement chroot.</para>
147
        </listitem>
148
      </varlistentry>
590 gleu 149
    </variablelist>
150
 
731 texou 151
    <para>Compilez GCC en lançant&nbsp;:</para>
590 gleu 152
 
1347 jmengual 153
<screen><userinput remap="make">make gcc_cv_libc_provides_ssp=yes</userinput></screen>
439 guillaume 154
 
1347 jmengual 155
    <para>La variable  <parameter>gcc_cv_libc_provides_ssp=yes</parameter>
156
    est nécessaires sur certains systèmes hôtes pour s'assurer que la fonction
157
    SSP de Glibc soit utilisée à la place de celle de
158
    <filename>libssp.so</filename>.</para>
159
 
590 gleu 160
    <para>La compilation est maintenant terminée. À ce point, la suite de tests
161
    devrait être lancée. Mais, comme nous l'avons dit plus tôt, l'ensemble de
162
    travail de la suite de tests n'est pas encore en place. Les bénéfices à lancer
163
    les tests maintenant seraient minimes car les programmes de la première passe
164
    seront bientôt remplacés.</para>
439 guillaume 165
 
590 gleu 166
    <para>Installez le paquet&nbsp;:</para>
475 gleu 167
 
602 texou 168
<screen><userinput remap="install">make install</userinput></screen>
439 guillaume 169
 
696 texou 170
    <para>L'utilisation de <parameter>--disable-shared</parameter> signifie
171
    que le fichier <filename>libgcc_eh.a</filename> n'est pas créé et installé.
172
    Le paquet Glibc dépend de cette bibliothèque puisqu'il utilise
173
    <parameter>-lgcc_eh</parameter> à l'intérieur de son système de construction.
174
    On peut satisfaire cette dépendance en créant un lien symbolique vers
175
    <filename>libgcc.a</filename>, puisque ce fichier va finir par contenir les
936 jmengual 176
    objets normalement contenus dans <filename>libgcc_eh.a</filename>:</para>
696 texou 177
 
731 texou 178
<screen><userinput remap="install">ln -vs libgcc.a `$LFS_TGT-gcc -print-libgcc-file-name | \
696 texou 179
    sed 's/libgcc/&amp;_eh/'`</userinput></screen>
180
 
590 gleu 181
  </sect2>
439 guillaume 182
 
590 gleu 183
  <sect2 role="content">
184
    <title/>
475 gleu 185
 
590 gleu 186
    <para>Les détails sur ce paquet sont disponibles dans
187
    <xref linkend="contents-gcc" role="."/></para>
188
 
189
  </sect2>
190
 
358 guillaume 191
</sect1>