source: chapter06/gcc-pass2.xml@ f01f8a5

11.3 11.3-rc1 12.0 12.0-rc1 12.1 12.1-rc1 bdubbs/gcc13 multilib renodr/libudev-from-systemd trunk xry111/arm64 xry111/arm64-12.0 xry111/clfs-ng xry111/loongarch xry111/loongarch-12.0 xry111/loongarch-12.1 xry111/mips64el xry111/update-glibc
Last change on this file since f01f8a5 was f01f8a5, checked in by Xi Ruoyao <xry111@…>, 17 months ago

gcc: remove --disable-decimal-float from pass 1 and 2

We need to enable decimal float here or MPFR will be built w/o decimal
float support. Then 2 of 183 tests will be skipped, and this will also
cause an ICA issue.

Q: Why we need decimal float in pass 1?
A: We need pass-1 GCC with decimal float support to build decimal float
routines in pass-2 libgcc.

  • Property mode set to 100644
File size: 6.5 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../general.ent">
5 %general-entities;
6]>
7
8<sect1 id="ch-tools-gcc-pass2" role="wrap" xreflabel="gcc-pass2">
9 <?dbhtml filename="gcc-pass2.html"?>
10
11 <sect1info condition="script">
12 <productname>gcc-pass2</productname>
13 <productnumber>&gcc-version;</productnumber>
14 <address>&gcc-url;</address>
15 </sect1info>
16
17 <title>GCC-&gcc-version; - Pass 2</title>
18
19 <indexterm zone="ch-tools-gcc-pass2">
20 <primary sortas="a-GCC">GCC</primary>
21 <secondary>tools, pass 2</secondary>
22 </indexterm>
23
24 <sect2 role="package">
25 <title/>
26
27 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
28 href="../chapter08/gcc.xml"
29 xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
30
31 <segmentedlist>
32 <segtitle>&buildtime;</segtitle>
33 <segtitle>&diskspace;</segtitle>
34
35 <seglistitem>
36 <seg>&gcc-tmpp2-sbu;</seg>
37 <seg>&gcc-tmpp2-du;</seg>
38 </seglistitem>
39 </segmentedlist>
40
41 </sect2>
42
43 <sect2 role="installation">
44 <title>Installation of GCC</title>
45<!--
46 <para>First fix a problem with the latest version of glibc:</para>
47
48 <screen><userinput remap="pre">patch -Np1 -i ../&gcc-upstream-fixes-patch;</userinput></screen>
49-->
50 <para>As in the first build of GCC, the GMP, MPFR, and MPC packages are
51 required. Unpack the tarballs and move them into the required directories:</para>
52
53<screen><userinput remap="pre">tar -xf ../mpfr-&mpfr-version;.tar.xz
54mv -v mpfr-&mpfr-version; mpfr
55tar -xf ../gmp-&gmp-version;.tar.xz
56mv -v gmp-&gmp-version; gmp
57tar -xf ../mpc-&mpc-version;.tar.gz
58mv -v mpc-&mpc-version; mpc</userinput></screen>
59
60 <para>If building on x86_64, change the default directory name for 64-bit
61 libraries to <quote>lib</quote>:</para>
62
63<screen><userinput remap="pre">case $(uname -m) in
64 x86_64)
65 sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64
66 ;;
67esac</userinput></screen>
68
69 <para>Override the building rule of libgcc and libstdc++ headers, to
70 allow building these libraries with POSIX threads support:</para>
71
72<screen><userinput remap="pre">sed '/thread_header =/s/@.*@/gthr-posix.h/' \
73 -i libgcc/Makefile.in libstdc++-v3/include/Makefile.in</userinput></screen>
74
75 <para>Create a separate build directory again:</para>
76
77<screen><userinput remap="pre">mkdir -v build
78cd build</userinput></screen>
79
80 <para>Before starting to build GCC, remember to unset any environment
81 variables that override the default optimization flags.</para>
82
83 <para>Now prepare GCC for compilation:</para>
84
85<screen><userinput remap="configure">../configure \
86 --build=$(../config.guess) \
87 --host=$LFS_TGT \
88 --target=$LFS_TGT \
89 LDFLAGS_FOR_TARGET=-L$PWD/$LFS_TGT/libgcc \
90 --prefix=/usr \
91 --with-build-sysroot=$LFS \
92 --enable-default-pie \
93 --enable-default-ssp \
94 --disable-nls \
95 --disable-multilib \
96 --disable-libatomic \
97 --disable-libgomp \
98 --disable-libquadmath \
99 --disable-libssp \
100 --disable-libvtv \
101 --enable-languages=c,c++</userinput></screen>
102
103 <variablelist>
104 <title>The meaning of the new configure options:</title><!-- WIP -->
105
106 <varlistentry>
107 <term><parameter>--with-build-sysroot=$LFS</parameter></term>
108 <listitem>
109 <para>Normally, using <parameter>--host</parameter> ensures that
110 a cross-compiler is used for building GCC, and that compiler knows
111 that it has to look for headers and libraries in <filename
112 class="directory">$LFS</filename>. But the build system for GCC uses
113 other tools, which are not aware of this location. This switch is
114 needed so those tools will find the needed files in <filename
115 class="directory">$LFS</filename>, and not on the host.</para>
116 </listitem>
117 </varlistentry>
118
119 <varlistentry>
120 <term><parameter>--target=$LFS_TGT</parameter></term>
121 <listitem>
122 <para>We are cross-compiling GCC, so it's impossible to build
123 target libraries (<filename class="libraryfile">libgcc</filename>
124 and <filename class="libraryfile">libstdc++</filename>) with the
125 previously compiled GCC binaries&mdash;those binaries won't run on the
126 host. The GCC build system will attempt to use the host's
127 C and C++ compilers as a workaround by default.
128 Building the GCC target libraries with a different
129 version of GCC is not supported, so using the host's compilers may cause
130 the build to fail. This parameter ensures the libraries are built by GCC
131 pass 1.</para>
132 </listitem>
133 </varlistentry>
134
135 <varlistentry>
136 <term><parameter>LDFLAGS_FOR_TARGET=...</parameter></term>
137 <listitem>
138 <para>Allow <filename class="libraryfile">libstdc++</filename> to
139 use the shared <filename class="libraryfile">libgcc</filename> being
140 built in this pass, instead of the static version that was built in GCC
141 pass 1. This is necessary to support C++ exception
142 handling.</para>
143 </listitem>
144 </varlistentry>
145
146 </variablelist>
147
148 <para>Compile the package:</para>
149
150<screen><userinput remap="make">make</userinput></screen>
151
152 <para>Install the package:</para>
153
154<screen><userinput remap="install">make DESTDIR=$LFS install</userinput></screen>
155
156 <para>As a finishing touch, create a utility symlink. Many programs and scripts
157 run <command>cc</command> instead of <command>gcc</command>, which is
158 used to keep programs generic and therefore usable on all kinds of UNIX
159 systems where the GNU C compiler is not always installed. Running
160 <command>cc</command> leaves the system administrator free to decide
161 which C compiler to install:</para>
162
163<screen><userinput remap="install">ln -sv gcc $LFS/usr/bin/cc</userinput></screen>
164
165 </sect2>
166
167 <sect2 role="content">
168 <title/>
169
170 <para>Details on this package are located in
171 <xref linkend="contents-gcc" role="."/></para>
172
173 </sect2>
174
175</sect1>
Note: See TracBrowser for help on using the repository browser.