Changeset 1f7ca93 for chapter05/gcc-pass2.xml
- Timestamp:
- 01/20/2006 09:02:23 PM (18 years ago)
- 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
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
chapter05/gcc-pass2.xml
r11cbbb0 r1f7ca93 1 1 <?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" [ 3 4 <!ENTITY % general-entities SYSTEM "../general.ent"> 4 5 %general-entities; 5 6 ]> 7 6 8 <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—Tcl, Expect 30 and DejaGNU—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—Tcl, Expect 45 and DejaGNU—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> 38 53 39 54 <screen><userinput>expect -c "spawn ls"</userinput></screen> 40 55 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. 44 59 Ask your system administrator to create more.</computeroutput></screen> 45 60 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, the57 <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 the60 <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> 62 77 63 78 <screen><userinput>cp -v gcc/Makefile.in{,.orig} && 64 79 sed 's@\./fixinc\.sh@-c true@' gcc/Makefile.in.orig > gcc/Makefile.in</userinput></screen> 65 80 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 following69 <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> 71 86 72 87 <screen><userinput>cp -v gcc/Makefile.in{,.tmp} && 73 88 sed 's/^XCFLAGS =$/& -fomit-frame-pointer/' gcc/Makefile.in.tmp \ 74 > 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 > 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> 78 94 79 95 <screen><userinput>patch -Np1 -i ../&gcc-specs-patch;</userinput></screen> 80 96 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> 93 110 94 111 <screen><userinput>mkdir -v ../gcc-build 95 112 cd ../gcc-build</userinput></screen> 96 113 97 <para>Before starting to build GCC, remember to unset any environment98 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> 101 118 102 119 <screen><userinput>../gcc-&gcc-version;/configure --prefix=/tools \ … … 106 123 --disable-libstdcxx-pch</userinput></screen> 107 124 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> 155 181 156 182 <screen><userinput>make</userinput></screen> 157 183 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> 167 191 168 192 <screen><userinput>make -k check</userinput></screen> 169 193 170 <para>The <parameter>-k</parameter> flag is used to make the test suite run171 through to completion and not stop at the first failure. The GCC test172 suite is very comprehensive and is almost guaranteed to generate a few173 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 175 199 <screen><userinput>../gcc-&gcc-version;/contrib/test_summary</userinput></screen> 176 200 177 <para>For only the summaries, pipe the output through178 <userinput>grep -A7 Summ</userinput>.</para>179 180 <para>Results can be compared with those located at <ulink181 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> 192 216 193 217 <screen><userinput>make install</userinput></screen> 194 218 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> 207 236 208 237 </sect1> 209
Note:
See TracChangeset
for help on using the changeset viewer.