aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDJ Lucas <dj@linuxfromscratch.org>2008-10-12 04:09:47 +0000
committerDJ Lucas <dj@linuxfromscratch.org>2008-10-12 04:09:47 +0000
commit0eb906581f5309be74fe1fd4f2f7b27d4b80f48a (patch)
tree2e73ccc616834e2374489926b7b2510415ece6e4
parent3f39abf3beabee4cb50e496632851eb1e33f2695 (diff)
Use static linked gcc for pass 1 - #2056.
git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@8647 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
-rw-r--r--chapter01/changelog.xml4
-rw-r--r--chapter05/gcc-pass1.xml26
2 files changed, 21 insertions, 9 deletions
diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml
index f8114203b..e31fbbfd2 100644
--- a/chapter01/changelog.xml
+++ b/chapter01/changelog.xml
@@ -41,6 +41,10 @@
<para>2008-10-12</para>
<itemizedlist>
<listitem>
+ <para>[dj] - Changed Chapter 5 GCC Pass 1 build to static. Thanks to
+ Jeremy Huntwork for the suggestion and supporting text.</para>
+ </listitem>
+ <listitem>
<para>[dj] - Added note to Chapter 6 GCC abuot the new include-fixed
directory and changed the sample output to match.</para>
</listitem>
diff --git a/chapter05/gcc-pass1.xml b/chapter05/gcc-pass1.xml
index 218566bab..1731034da 100644
--- a/chapter05/gcc-pass1.xml
+++ b/chapter05/gcc-pass1.xml
@@ -61,8 +61,8 @@ cd ../gcc-build</userinput></screen>
<para>Prepare GCC for compilation:</para>
<screen><userinput remap="configure">CC="gcc -B/usr/bin/" ../gcc-&gcc-version;/configure --prefix=/tools \
- --with-local-prefix=/tools --disable-nls --enable-shared \
- --enable-languages=c --disable-decimal-float</userinput></screen>
+ --with-local-prefix=/tools --disable-nls --disable-shared \
+ --enable-languages=c</userinput></screen>
<variablelist>
<title>The meaning of the configure options:</title>
@@ -90,14 +90,11 @@ cd ../gcc-build</userinput></screen>
</varlistentry>
<varlistentry>
- <term><parameter>--enable-shared</parameter></term>
+ <term><parameter>--disable-shared</parameter></term>
<listitem>
- <para>This switch allows the building of <filename
- class="libraryfile">libgcc_s.so.1</filename> and
- <filename class="libraryfile">libgcc_eh.a</filename>.
- Having <filename class="libraryfile">libgcc_eh.a</filename>
- available ensures that the configure script for Glibc (the
- next package we compile) produces the proper results.</para>
+ <para>This switch forces gcc to link its internal libraries
+ statically. We do this to avoid possible issues with the host
+ system.</para>
</listitem>
</varlistentry>
@@ -130,6 +127,17 @@ cd ../gcc-build</userinput></screen>
<screen><userinput remap="install">make install</userinput></screen>
+ <para>Using <parameter>--disable-shared</parameter> means that the
+ <filename>libgcc_eh.a</filename> file isn't created and installed. The
+ Glibc package depends on this library as it uses
+ <parameter>-lgcc_eh</parameter> within its build system. We can satisfy
+ that dependency by creating a symlink to <filename>libgcc.a</filename>,
+ since that file will end up containing the objects normally contained in
+ <filename>libgcc_eh.a</filename>.</para>
+
+<screen><userinput remap="install">ln -vs libgcc.a `gcc -print-libgcc-file-name | \
+ sed 's/libgcc/&amp;_eh/'`</userinput></screen>
+
<para>As a finishing touch, create a symlink. Many programs and scripts
run <command>cc</command> instead of <command>gcc</command>, which is
used to keep programs generic and therefore usable on all kinds of UNIX