Ignore:
Timestamp:
01/20/2006 09:02:23 PM (18 years ago)
Author:
Manuel Canales Esparcia <manuel@…>
Branches:
10.0, 10.0-rc1, 10.1, 10.1-rc1, 11.0, 11.0-rc1, 11.0-rc2, 11.0-rc3, 11.1, 11.1-rc1, 11.2, 11.2-rc1, 11.3, 11.3-rc1, 12.0, 12.0-rc1, 12.1, 12.1-rc1, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.5-systemd, 7.6, 7.6-systemd, 7.7, 7.7-systemd, 7.8, 7.8-systemd, 7.9, 7.9-systemd, 8.0, 8.1, 8.2, 8.3, 8.4, 9.0, 9.1, arm, bdubbs/gcc13, ml-11.0, multilib, renodr/libudev-from-systemd, s6-init, trunk, xry111/arm64, xry111/arm64-12.0, xry111/clfs-ng, xry111/lfs-next, xry111/loongarch, xry111/loongarch-12.0, xry111/loongarch-12.1, xry111/mips64el, xry111/pip3, xry111/rust-wip-20221008, xry111/update-glibc
Children:
e1d5f7b
Parents:
11cbbb0
Message:

Indenting chapter 05, part 3

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@7286 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

File:
1 edited

Legend:

Unmodified
Added
Removed
  • chapter05/gcc-pass2.xml

    r11cbbb0 r1f7ca93  
    11<?xml version="1.0" encoding="ISO-8859-1"?>
    2 <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
     2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
     3  "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
    34  <!ENTITY % general-entities SYSTEM "../general.ent">
    45  %general-entities;
    56]>
     7
    68<sect1 id="ch-tools-gcc-pass2" role="wrap">
    7 <title>GCC-&gcc-version; - Pass 2</title>
    8 <?dbhtml filename="gcc-pass2.html"?>
    9 
    10 <indexterm zone="ch-tools-gcc-pass2">
    11 <primary sortas="a-GCC">GCC</primary>
    12 <secondary>tools, pass 2</secondary></indexterm>
    13 
    14 <sect2 role="package"><title/>
    15 
    16 <segmentedlist>
    17 <segtitle>&buildtime;</segtitle>
    18 <segtitle>&diskspace;</segtitle>
    19 <seglistitem><seg>11.0 SBU</seg><seg>292 MB</seg></seglistitem>
    20 </segmentedlist>
    21 
    22 <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/gcc.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
    23 
    24 </sect2>
    25 
    26 <sect2 role="installation">
    27 <title>Re-installation of GCC</title>
    28 
    29 <para>The tools required to test GCC and Binutils&mdash;Tcl, Expect
    30 and DejaGNU&mdash;are installed now. GCC and Binutils can now be
    31 rebuilt, linking them against the new Glibc and testing them properly
    32 (if running the test suites in this chapter). Please note that these
    33 test suites are highly dependent on properly functioning PTYs which
    34 are provided by the host. PTYs are most commonly implemented via the
    35 <systemitem class="filesystem">devpts</systemitem> file system. Check
    36 to see if the host system is set up correctly in this regard by
    37 performing a quick test:</para>
     9  <?dbhtml filename="gcc-pass2.html"?>
     10
     11  <title>GCC-&gcc-version; - Pass 2</title>
     12
     13  <indexterm zone="ch-tools-gcc-pass2">
     14    <primary sortas="a-GCC">GCC</primary>
     15    <secondary>tools, pass 2</secondary>
     16  </indexterm>
     17
     18  <sect2 role="package">
     19    <title/>
     20
     21    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
     22    href="../chapter06/gcc.xml"
     23    xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
     24
     25    <segmentedlist>
     26      <segtitle>&buildtime;</segtitle>
     27      <segtitle>&diskspace;</segtitle>
     28
     29      <seglistitem>
     30        <seg>11.0 SBU</seg>
     31        <seg>292 MB</seg>
     32      </seglistitem>
     33    </segmentedlist>
     34
     35    <xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
     36    href="../chapter06/gcc.xml"
     37    xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
     38
     39  </sect2>
     40
     41  <sect2 role="installation">
     42    <title>Re-installation of GCC</title>
     43
     44    <para>The tools required to test GCC and Binutils&mdash;Tcl, Expect
     45    and DejaGNU&mdash;are installed now. GCC and Binutils can now be
     46    rebuilt, linking them against the new Glibc and testing them properly
     47    (if running the test suites in this chapter). Please note that these
     48    test suites are highly dependent on properly functioning PTYs which
     49    are provided by the host. PTYs are most commonly implemented via the
     50    <systemitem class="filesystem">devpts</systemitem> file system. Check
     51    to see if the host system is set up correctly in this regard by
     52    performing a quick test:</para>
    3853
    3954<screen><userinput>expect -c "spawn ls"</userinput></screen>
    4055
    41 <para>The response might be:</para>
    42 
    43 <screen><computeroutput>The system has no more ptys. 
     56    <para>The response might be:</para>
     57
     58<screen><computeroutput>The system has no more ptys.
    4459Ask your system administrator to create more.</computeroutput></screen>
    4560
    46 <para>If the above message is received, the host does not have its PTYs set up
    47 properly. In this case, there is no point in running the test suites for GCC and
    48 Binutils until this issue is resolved. Please consult the LFS FAQ at <ulink
    49 url="&lfs-root;/lfs/faq.html#no-ptys"/> for more information on how to get PTYs
    50 working.</para>
    51 
    52 <para>As previously explained in <xref linkend="ch-tools-adjusting"/>,  under
    53 normal circumstances the GCC <command>fixincludes</command> script is run in
    54 order to fix potentially broken header files.  As GCC-&gcc-version; and
    55 Glibc-&glibc-version; have already been installed at this point, and their
    56 respective header files are known to not require fixing, the
    57 <command>fixincludes</command> script is not required.  As mentioned previously,
    58 the script may in fact pollute the build environment by installing fixed headers
    59 from the host system into GCC's private include directory.  The running of the
    60 <command>fixincludes</command> script can be suppressed by issuing the following
    61 commands:</para>
     61    <para>If the above message is received, the host does not have its PTYs
     62    set up properly. In this case, there is no point in running the test
     63    suites for GCC and Binutils until this issue is resolved. Please consult
     64    the LFS FAQ at <ulink url="&lfs-root;/lfs/faq.html#no-ptys"/> for more
     65    information on how to get PTYs working.</para>
     66
     67    <para>As previously explained in <xref linkend="ch-tools-adjusting"/>,
     68    under normal circumstances the GCC <command>fixincludes</command> script
     69    is run in order to fix potentially broken header files. As GCC-&gcc-version;
     70    and Glibc-&glibc-version; have already been installed at this point, and
     71    their respective header files are known to not require fixing, the
     72    <command>fixincludes</command> script is not required. As mentioned
     73    previously, the script may in fact pollute the build environment by
     74    installing fixed headers from the host system into GCC's private include
     75    directory. The running of the <command>fixincludes</command> script can
     76    be suppressed by issuing the following commands:</para>
    6277
    6378<screen><userinput>cp -v gcc/Makefile.in{,.orig} &amp;&amp;
    6479sed 's@\./fixinc\.sh@-c true@' gcc/Makefile.in.orig &gt; gcc/Makefile.in</userinput></screen>
    6580
    66 <para>The bootstrap build performed in <xref linkend="ch-tools-gcc-pass1"/>
    67 built GCC with the <option>-fomit-frame-pointer</option> compiler flag.
    68 Non-bootstrap builds omit this flag by default, so apply the following
    69 <command>sed</command> to use it in order to ensure consistent compiler builds.
    70 </para>
     81    <para>The bootstrap build performed in <xref linkend="ch-tools-gcc-pass1"/>
     82    built GCC with the <option>-fomit-frame-pointer</option> compiler flag.
     83    Non-bootstrap builds omit this flag by default, so apply the following
     84    <command>sed</command> to use it in order to ensure consistent compiler
     85    builds.</para>
    7186
    7287<screen><userinput>cp -v gcc/Makefile.in{,.tmp} &amp;&amp;
    7388sed 's/^XCFLAGS =$/&amp; -fomit-frame-pointer/' gcc/Makefile.in.tmp \
    74         &gt; gcc/Makefile.in</userinput></screen>
    75 
    76 <para>Apply the following patch to change the location of GCC's default dynamic
    77 linker (typically <filename class="libraryfile">ld-linux.so.2</filename>):</para>
     89  &gt; gcc/Makefile.in</userinput></screen>
     90
     91    <para>Apply the following patch to change the location of GCC's default
     92    dynamiclinker (typically <filename
     93    class="libraryfile">ld-linux.so.2</filename>):</para>
    7894
    7995<screen><userinput>patch -Np1 -i ../&gcc-specs-patch;</userinput></screen>
    8096
    81 <para>The above patch also removes
    82 <filename class="directory">/usr/include</filename> from GCC's include search
    83 path. Patching now rather than adjusting the specs file after installation
    84 ensures that the new dynamic linker is used during the actual build of GCC. That
    85 is, all of the binaries created during the build will link against the new
    86 Glibc.</para>
    87 
    88 <important><para>The above patch is critical in ensuring a
    89 successful overall build. Do not forget to apply
    90 it.</para></important>
    91 
    92 <para>Create a separate build directory again:</para>
     97    <para>The above patch also removes <filename
     98    class="directory">/usr/include</filename> from GCC's include search path.
     99    Patching now rather than adjusting the specs file after installation
     100    ensures that the new dynamic linker is used during the actual build of
     101    GCC. That is, all of the binaries created during the build will link
     102    against the new Glibc.</para>
     103
     104    <important>
     105      <para>The above patch is critical in ensuring a successful overall
     106      build. Do not forget to apply it.</para>
     107    </important>
     108
     109    <para>Create a separate build directory again:</para>
    93110
    94111<screen><userinput>mkdir -v ../gcc-build
    95112cd ../gcc-build</userinput></screen>
    96113
    97 <para>Before starting to build GCC, remember to unset any environment
    98 variables that override the default optimization flags.</para>
    99 
    100 <para>Now prepare GCC for compilation:</para>
     114    <para>Before starting to build GCC, remember to unset any environment
     115    variables that override the default optimization flags.</para>
     116
     117    <para>Now prepare GCC for compilation:</para>
    101118
    102119<screen><userinput>../gcc-&gcc-version;/configure --prefix=/tools \
     
    106123    --disable-libstdcxx-pch</userinput></screen>
    107124
    108 <para>The meaning of the new configure options:</para>
    109 
    110 <variablelist>
    111 <varlistentry>
    112 <term><parameter>--enable-clocale=gnu</parameter></term>
    113 <listitem><para>This option ensures the correct locale model is
    114 selected for the C++ libraries under all circumstances. If the
    115 configure script finds the <emphasis>de_DE</emphasis> locale installed, it will select the
    116 correct gnu locale model. However, if the <emphasis>de_DE</emphasis> locale is not
    117 installed, there is the risk of building Application Binary Interface
    118 (ABI)-incompatible C++ libraries because the incorrect generic locale
    119 model may be selected.</para></listitem>
    120 </varlistentry>
    121 
    122 <varlistentry>
    123 <term><parameter>--enable-threads=posix</parameter></term>
    124 <listitem><para>This enables C++ exception handling for multi-threaded
    125 code.</para></listitem>
    126 </varlistentry>
    127 
    128 <varlistentry>
    129 <term><parameter>--enable-__cxa_atexit</parameter></term>
    130 <listitem><para>This option allows use of
    131 <emphasis>__cxa_atexit</emphasis>, rather than
    132 <emphasis>atexit</emphasis>, to register C++ destructors for local
    133 statics and global objects.  This option is essential for fully
    134 standards-compliant handling of destructors. It also affects the C++
    135 ABI, and therefore results in C++ shared libraries and C++ programs
    136 that are interoperable with other Linux
    137 distributions.</para></listitem>
    138 </varlistentry>
    139 
    140 <varlistentry>
    141 <term><parameter>--enable-languages=c,c++</parameter></term>
    142 <listitem><para>This option
    143 ensures that both the C and C++ compilers are built.</para></listitem>
    144 </varlistentry>
    145 
    146 <varlistentry>
    147 <term><parameter>--disable-libstdcxx-pch</parameter></term>
    148 <listitem><para>Do not build the pre-compiled header (PCH) for
    149 <filename class="libraryfile">libstdc++</filename>. It takes up a lot of space,
    150 and we have no use for it.</para></listitem>
    151 </varlistentry>
    152 </variablelist>
    153 
    154 <para>Compile the package:</para>
     125    <variablelist>
     126      <title>The meaning of the new configure options:</title>
     127
     128      <varlistentry>
     129        <term><parameter>--enable-clocale=gnu</parameter></term>
     130        <listitem>
     131          <para>This option ensures the correct locale model is selected
     132          for the C++ libraries under all circumstances. If the configure
     133          script finds the <emphasis>de_DE</emphasis> locale installed,
     134          it will select the correct gnu locale model. However, if the
     135          <emphasis>de_DE</emphasis> locale is not installed, there is the
     136          risk of building Application Binary Interface (ABI)-incompatible
     137          C++ libraries because the incorrect generic locale model may be
     138          selected.</para>
     139        </listitem>
     140      </varlistentry>
     141
     142      <varlistentry>
     143        <term><parameter>--enable-threads=posix</parameter></term>
     144        <listitem>
     145          <para>This enables C++ exception handling for multi-threaded code.</para>
     146        </listitem>
     147      </varlistentry>
     148
     149      <varlistentry>
     150        <term><parameter>--enable-__cxa_atexit</parameter></term>
     151        <listitem>
     152          <para>This option allows use of <function>__cxa_atexit</function>,
     153          rather than <function>atexit</function>, to register C++ destructors
     154          for local statics and global objects. This option is essential for
     155          fully standards-compliant handling of destructors. It also affects
     156          the C++ ABI, and therefore results in C++ shared libraries and C++
     157          programs that are interoperable with other Linux distributions.</para>
     158        </listitem>
     159      </varlistentry>
     160
     161      <varlistentry>
     162        <term><parameter>--enable-languages=c,c++</parameter></term>
     163        <listitem>
     164          <para>This option ensures that both the C and C++ compilers are
     165          built.</para>
     166        </listitem>
     167      </varlistentry>
     168
     169      <varlistentry>
     170        <term><parameter>--disable-libstdcxx-pch</parameter></term>
     171        <listitem>
     172          <para>Do not build the pre-compiled header (PCH) for
     173          <filename class="libraryfile">libstdc++</filename>. It takes up a
     174          lot of space, and we have no use for it.</para>
     175        </listitem>
     176      </varlistentry>
     177
     178    </variablelist>
     179
     180    <para>Compile the package:</para>
    155181
    156182<screen><userinput>make</userinput></screen>
    157183
    158 <para>There is no need to use the <parameter>bootstrap</parameter>
    159 target now because the compiler being used to compile this GCC was
    160 built from the exact same version of the GCC sources used
    161 earlier.</para>
    162 
    163 <para>Compilation is now complete. As previously mentioned, running
    164 the test suites for the temporary tools compiled in this chapter is
    165 not mandatory. To run the GCC test suite anyway, use the following
    166 command:</para>
     184    <para>There is no need to use the <parameter>bootstrap</parameter> target
     185    now because the compiler being used to compile this GCC was built from
     186    the exact same version of the GCC sources used earlier.</para>
     187
     188    <para>Compilation is now complete. As previously mentioned, running the test
     189    suites for the temporary tools compiled in this chapter is not mandatory.
     190    To run the GCC test suite anyway, use the following command:</para>
    167191
    168192<screen><userinput>make -k check</userinput></screen>
    169193
    170 <para>The <parameter>-k</parameter> flag is used to make the test suite run
    171 through to completion and not stop at the first failure. The GCC test
    172 suite is very comprehensive and is almost guaranteed to generate a few
    173 failures. To receive a summary of the test suite results, run:</para>
    174  
     194    <para>The <parameter>-k</parameter> flag is used to make the test suite run
     195    through to completion and not stop at the first failure. The GCC test
     196    suite is very comprehensive and is almost guaranteed to generate a few
     197    failures. To receive a summary of the test suite results, run:</para>
     198
    175199<screen><userinput>../gcc-&gcc-version;/contrib/test_summary</userinput></screen>
    176200
    177 <para>For only the summaries, pipe the output through
    178 <userinput>grep -A7 Summ</userinput>.</para>
    179 
    180 <para>Results can be compared with those located at <ulink
    181 url="&test-results;"/>.</para>
    182 
    183 <para>A few unexpected failures cannot always be avoided. The GCC developers are
    184 usually aware of these issues, but have not resolved them yet. In particular,
    185 the <filename class="libraryfile">libmudflap</filename> tests are known be
    186 particularly problematic as a result of a bug in GCC (<ulink
    187 url="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20003"/>).  Unless the test
    188 results are vastly different from those at the above URL, it is safe to
    189 continue.</para>
    190 
    191 <para>Install the package:</para>
     201    <para>For only the summaries, pipe the output through
     202    <userinput>grep -A7 Summ</userinput>.</para>
     203
     204    <para>Results can be compared with those located at <ulink
     205    url="&test-results;"/>.</para>
     206
     207    <para>A few unexpected failures cannot always be avoided. The GCC developers
     208    are usually aware of these issues, but have not resolved them yet. In
     209    particular, the <filename class="libraryfile">libmudflap</filename> tests
     210    are known be particularly problematic as a result of a bug in GCC
     211    (<ulink url="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20003"/>).
     212    Unless the test results are vastly different from those at the above URL,
     213    it is safe to continue.</para>
     214
     215    <para>Install the package:</para>
    192216
    193217<screen><userinput>make install</userinput></screen>
    194218
    195 <note><para>At this point it is strongly recommended to repeat the
    196 sanity check we performed earlier in this chapter. Refer back to <xref
    197 linkend="ch-tools-adjusting" role=","/> and repeat the test compilation.  If
    198 the result is wrong, the most likely reason is that the GCC Specs
    199 patch was not properly applied.</para></note>
    200 
    201 </sect2>
    202 
    203 <sect2 role="content"><title/>
    204 <para>Details on this package are located in <xref
    205 linkend="contents-gcc" role="."/></para>
    206 </sect2>
     219    <note>
     220      <para>At this point it is strongly recommended to repeat the sanity
     221      check we performed earlier in this chapter. Refer back to <xref
     222      linkend="ch-tools-adjusting" role=","/> and repeat the test compilation.
     223      If the result is wrong, the most likely reason is that the GCC Specs
     224      patch was not properly applied.</para>
     225    </note>
     226
     227  </sect2>
     228
     229  <sect2 role="content">
     230    <title/>
     231
     232    <para>Details on this package are located in
     233    <xref linkend="contents-gcc" role="."/></para>
     234
     235  </sect2>
    207236
    208237</sect1>
    209 
Note: See TracChangeset for help on using the changeset viewer.