source: chapter05/gcc-pass1-inst.xml@ b18ab71

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.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 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/mips64el xry111/pip3 xry111/rust-wip-20221008 xry111/update-glibc
Last change on this file since b18ab71 was 148bb04, checked in by Alex Gronenwoud <alex@…>, 21 years ago

Renaming /stage1 to /tools.

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

  • Property mode set to 100644
File size: 3.7 KB
RevLine 
[7681a57]1<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
2
[6370fa6]3<sect2>
[a36091d]4<title>Installation of GCC</title>
[6370fa6]5
[ab6f1859]6<para>Unpack only the GCC-core tarball, as we won't be needing a C++ compiler
7for the moment.</para>
[4e010de]8
[e69a59f]9<para>This package is known to behave badly when you have changed its
[2b114b25]10default optimization flags (including the -march and -mcpu options).
11Therefore, if you have defined any environment variables that override
12default optimizations, such as CFLAGS and CXXFLAGS, we recommend unsetting
13or modifying them when building GCC.</para>
[b43aab1]14
[7681a57]15<para>It is recommended by the GCC installation documentation to build
16GCC outside of the source directory in a dedicated directory:</para>
17
18<para><screen><userinput>mkdir ../gcc-build
19cd ../gcc-build</userinput></screen></para>
20
21<para>Prepare GCC to be compiled:</para>
[6370fa6]22
[148bb04]23<para><screen><userinput>../gcc-&gcc-version;/configure --prefix=/tools \
24&nbsp;&nbsp;&nbsp;&nbsp;--with-local-prefix=/tools \
[0939e573]25&nbsp;&nbsp;&nbsp;&nbsp;--disable-nls --enable-shared \
26&nbsp;&nbsp;&nbsp;&nbsp;--enable-languages=c</userinput></screen></para>
[7681a57]27
[087e584]28<para>The meaning of the new configure options:</para>
[7681a57]29
30<itemizedlist>
[148bb04]31<listitem><para><userinput>--with-local-prefix=/tools</userinput>: The
[66e4325]32purpose of this switch is to remove <filename>/usr/local/include</filename>
33from <userinput>gcc</userinput>'s include search path. This is not absolutely
34essential, but we want to try and minimize the influence from the host system,
35so this seems a logical thing to do.</para></listitem>
36
37<listitem><para><userinput>--enable-shared</userinput>: This switch may
38seem counter-intuitive at first. But using it allows the building of
39<filename>libgcc_s.so.1</filename> and <filename>libgcc_eh.a</filename>, and
40having <filename>libgcc_eh.a</filename> available ensures that the configure
41script for Glibc (the next package we compile) produces the proper results.
[ab6f1859]42Note that the <userinput>gcc</userinput> binaries will still be linked
[66e4325]43statically, as this is controlled by the <userinput>-static</userinput>
44value of BOOT_LDFLAGS further on.</para></listitem>
45
[ab6f1859]46<listitem><para><userinput>--enable-languages=c</userinput>: This option
47ensures that only the C compiler is built. The option is only needed when you
48have downloaded and unpacked the full GCC tarball.</para></listitem>
[7681a57]49</itemizedlist>
50
51<para>Continue with compiling the package:</para>
52
[84a7dc2]53<para><screen><userinput>make BOOT_LDFLAGS="-static" bootstrap</userinput></screen></para>
[7681a57]54
[087e584]55<para>The meaning of the make parameters:</para>
[7681a57]56
57<itemizedlist>
[66e4325]58<listitem><para><userinput>BOOT_LDFLAGS="-static"</userinput>: This tells
59GCC to link its programs statically.</para></listitem>
60
61<listitem><para><userinput>bootstrap</userinput>: This target doesn't just
62compile GCC, but compiles it several times. It uses the programs compiled in
63a first round to compile itself a second time, and then again a third time.
64It then compares these second and third compiles to make sure it can
65reproduce itself flawlessly, which most probably means that it was
66compiled correctly.</para></listitem>
[7681a57]67</itemizedlist>
68
[66e4325]69<para>And install the package:</para>
[7681a57]70
[bc82645e]71<para><screen><userinput>make install</userinput></screen></para>
[7681a57]72
[66e4325]73<para>As a finishing touch we'll create the <filename
[148bb04]74class="symlink">/tools/bin/cc</filename> symlink. Many programs and
[66e4325]75scripts run <userinput>cc</userinput> instead of <userinput>gcc</userinput>,
76a thing meant to keep programs generic and therefore usable on all kinds of
77Unix systems. Not everybody has the GNU C compiler installed. Simply running
78<userinput>cc</userinput> leaves the system administrator free to decide what
79C compiler to install, as long as there's a symlink pointing to it:</para>
[7681a57]80
[148bb04]81<para><screen><userinput>ln -sf gcc /tools/bin/cc</userinput></screen></para>
[6370fa6]82
83</sect2>
84
Note: See TracBrowser for help on using the repository browser.