aboutsummaryrefslogtreecommitdiffstats
path: root/chapter05/gcc-exp.xml
blob: 0f29ccffe7f6d71d0e5a6acc43a36bf2a7215d84 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<sect2>
<title>Command explanations</title>

<para><userinput>patch -Np1 -i ../gcc-&gcc-patch-version;.patch:</userinput>
This new patch deals with incorrect handling of weak symbols, the 
over-optimization of calls to those weak symbols, an atexit issue and
the  __dso_handle symbol required for atexit's proper function.</para>

<para><userinput>make BOOT_LDFLAGS=-static:</userinput>
This is the equivalent to make LDFLAGS=-static as we use with other
packages to compile them statically.</para>

<para><userinput>--prefix=/usr:</userinput> This is NOT a typo.  GCC hard
codes some paths while compiling and so we need to pass /usr as the
prefix during ./configure.  We pass the real install prefix during the
make install command later.</para>

<para><userinput>--enable-languages=c,c++:</userinput> This only builds the C
and C++ compilers and not the other available compilers as they are, on
the average, not often used. If those other compilers are needed,
the --enable-languages parameter can be omitted.</para>

<para><userinput>--enable-threads=posix:</userinput> This enables C++ 
exception handling for multithreaded code.</para>

<para><userinput>ln -sf ../usr/bin/cpp:</userinput> This
creates the $LFS/lib/cpp symlink. Some packages explicitly try to find
cpp in /lib.</para>

<para><userinput>ln -sf ../bin/cpp:</userinput> This
creates the $LFS/usr/lib/cpp symlink as there are packages that expect
cpp to be in /usr/lib.</para>

</sect2>