source: chapter06/gcc-inst.xml@ 033689a

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 12.2 12.2-rc1 6.0 6.1 6.1.1 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 v4_1 v5_0 v5_1 v5_1_1 xry111/arm64 xry111/arm64-12.0 xry111/clfs-ng xry111/lfs-next xry111/loongarch xry111/loongarch-12.0 xry111/loongarch-12.1 xry111/loongarch-12.2 xry111/mips64el xry111/multilib xry111/pip3 xry111/rust-wip-20221008 xry111/update-glibc
Last change on this file since 033689a was 2ff1ab9, checked in by Timothy Bauscher <timothy@…>, 22 years ago

Converted dynamic gcc page to new layout.

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

  • Property mode set to 100644
File size: 3.2 KB
RevLine 
[2ff1ab9]1<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
2
[6370fa6]3<sect2>
4<title>Installation of GCC</title>
5
[e69a59f]6<para>This package is known to behave badly when you have changed its
7default optimization flags (including the -march and -mcpu options). GCC is
[2c094d6]8best left alone. Therefore, if you have defined any environment variables
[e69a59f]9that override default optimizations, such as CFLAGS and CXXFLAGS, we
[4e010de]10recommend unsetting or modifying them when building GCC. You have
[e69a59f]11been warned.</para>
[b43aab1]12
[2ff1ab9]13<para>We will be building the C and C++ compilers at this time, so you'll
14need to unpack both the gcc-core and gcc-g++ tarballs. Other compilers are
15available in the full gcc package; instructions for building them may be
16found at <ulink url="&blfs-root;view/cvs/general/gcc.html"/>.</para>
17
18<para>It is recommended by the GCC installation documentation to build GCC
19in a dedicated directory outside of the source tree. Create the build
20directory:</para>
[6370fa6]21
[78867601]22<para><screen><userinput>mkdir ../gcc-build &amp;&amp;
[2ff1ab9]23cd ../gcc-build</userinput></screen></para>
24
25<para>Prepare GCC to be compiled:</para>
26
27<para><screen><userinput>../gcc-&gcc-version;/configure --prefix=/usr --enable-shared \
[4e010de]28&nbsp;&nbsp;&nbsp;&nbsp;--enable-threads=posix --with-slibdir=/lib \
[2ff1ab9]29&nbsp;&nbsp;&nbsp;&nbsp;--enable-__cxa_atexit --enable-clocale=gnu</userinput></screen></para>
30
31<para>The meanings of the configure options are:</para>
32
33<itemizedlist>
34<listitem><para><userinput>--enable-threads=posix:</userinput> This enables
35C++ exception handling for multi-threaded code.</para></listitem>
36
37<listitem><para><userinput>--enable-__cxa_atexit:</userinput> This option
38will result in C++ shared libraries and C++ programs that are interoperable
39with other Linux distributions.</para></listitem>
40
41<listitem><para><userinput>--enable-clocale=gnu:</userinput> There is a risk
42that some people will build ABI incompatible C++ libraries if they didn't
43install all of the glibc localedata. Using --enable-clocale=gnu ensures that
44the "right thing" is done in all cases. If you don't wish to use this option,
45then at least build the <emphasis>de_DE</emphasis> locale. When GCC finds
46this specific locale, then the correct locale mode (<emphasis>gnu</emphasis>)
47is implemented.</para></listitem>
48</itemizedlist>
49
50<para>Continue with compiling the package:</para>
51
52<para><screen><userinput>make bootstrap</userinput></screen></para>
53
54<para>The <emphasis>bootstrap</emphasis> target doesn't just compile GCC, but
55it compiles GCC a multiple times. It uses the first compiled programs to
56compile itself a second and third time to make sure the compiler was compiled
57properly.</para>
58
59<para>Finish installing the package:</para>
60
61<para><screen><userinput>make install</userinput></screen></para>
62
63<para>Some packages require that the C++ compiler be installed in the
64<filename>/lib</filename> and <filename>/usr/lib</filename> directories.
65To honor those packages, create two symlinks:</para>
66
67<para><screen><userinput>ln -s ../usr/bin/cpp /lib &amp;&amp;
68ln -s ../bin/cpp /usr/lib</userinput></screen></para>
69
70<para>Many packages compile using <emphasis>cc</emphasis> as the name for
71the C compiler. To satisfy those packages, create a <emphasis>cc</emphasis>
72symlink:</para>
73
74<para><screen><userinput>ln -s gcc /usr/bin/cc</userinput></screen></para>
[6370fa6]75
76</sect2>
Note: See TracBrowser for help on using the repository browser.