aboutsummaryrefslogtreecommitdiffstats
path: root/chapter06/readjusting.xml
diff options
context:
space:
mode:
authorJeremy Huntwork <jhuntwork@linuxfromscratch.org>2006-01-26 03:45:12 +0000
committerJeremy Huntwork <jhuntwork@linuxfromscratch.org>2006-01-26 03:45:12 +0000
commit313ca76210ced5b65eb0a30594959d6fc8ae5115 (patch)
tree9c6734b6c10d6d4d9c133c4af53a2c36e96f1f05 /chapter06/readjusting.xml
parentae437d3255865d8e9541728702dbe95b3c37c12e (diff)
Fixed the re-adjusting of the toolchain in chapter 6 so that chapter 6 GCC and Binutils links against the proper Glibc and so that we don't have to keep the binutils directories from chapter 5.
Also moved a note about saving the /tools directory to the beginning of chapter 6. Fixes bug 1677. Thanks to Chris Staub, Alexander Patrakov, Greg Schafer and Tushar Teredesai for reporting and resolving this issue. git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@7306 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
Diffstat (limited to 'chapter06/readjusting.xml')
-rw-r--r--chapter06/readjusting.xml51
1 files changed, 18 insertions, 33 deletions
diff --git a/chapter06/readjusting.xml b/chapter06/readjusting.xml
index 9a24e7597..4c2a82f75 100644
--- a/chapter06/readjusting.xml
+++ b/chapter06/readjusting.xml
@@ -9,7 +9,7 @@
<para>Now that the final C libraries have been installed, it is time to adjust
the toolchain again. The toolchain will be adjusted so that it will link any
-newly compiled program against these new libraries. This is the same process
+newly compiled program against these new libraries. This is a similar process
used in the <quote>Adjusting</quote> phase in the beginning of <xref
linkend="chapter-temporary-tools"/>, but with the adjustments reversed. In <xref
linkend="chapter-temporary-tools"/>, the chain was guided from the host's
@@ -19,38 +19,7 @@ be guided from that same <filename class="directory">/tools/lib</filename>
directory to the LFS <filename class="directory">/{,usr/}lib</filename>
directories.</para>
-<para>Start by adjusting the linker. The source and build directories from the
-second pass of Binutils were retained for this purpose. Install the adjusted
-linker by running the following command from within the <filename
-class="directory">binutils-build</filename> directory:</para>
-
-<screen><userinput>make -C ld INSTALL=/tools/bin/install install</userinput></screen>
-
-<note><para>If the earlier warning to retain the Binutils source and
-build directories from the second pass in <xref
-linkend="chapter-temporary-tools"/> was missed, or if they were
-accidentally deleted or are inaccessible, ignore the above command.
-The result will be that the next package, Binutils, will link against
-the C libraries in <filename class="directory">/tools</filename>
-rather than in <filename class="directory">/{,usr/}lib</filename>.
-This is not ideal, however, testing has shown that the resulting
-Binutils program binaries should be identical.</para></note>
-
-<para>From now on, every compiled program will link only against the
-libraries in <filename class="directory">/usr/lib</filename> and
-<filename class="directory">/lib</filename>. The extra
-<parameter>INSTALL=/tools/bin/install</parameter> option is needed
-because the <filename>Makefile</filename> file created during the
-second pass still contains the reference to
-<command>/usr/bin/install</command>, which has not been installed yet.
-Some host distributions contain a <filename
-class="symlink">ginstall</filename> symbolic link which takes
-precedence in the <filename>Makefile</filename> file and can cause a
-problem. The above command takes care of this issue.</para>
-
-<para>Remove the Binutils source and build directories now.</para>
-
-<para>Next, amend the GCC specs file so that it points to the new
+<para>First, amend the GCC specs file so that it points to the new
dynamic linker. A <command>sed</command> command accomplishes this:</para>
<screen><userinput>SPECFILE=`dirname $(gcc -print-libgcc-file-name)`/specs &amp;&amp;
@@ -69,6 +38,22 @@ dynamic linker in the above commands. Refer back to <xref
linkend="ch-tools-toolchaintechnotes" role=","/> if
necessary.</para></important>
+<para>Now create temporary wrapper scripts for <filename>gcc</filename> and
+<filename>ld</filename>. These scripts will point to their real counterparts
+in <filename class="directory">/tools</filename> but with adjusted parameters
+to ensure that GCC in the next section links to our newly installed Glibc.</para>
+
+<screen><userinput>cat &gt; /usr/bin/gcc &lt;&lt; "EOF"
+#!/bin/bash
+/tools/bin/gcc -B/usr/lib $@
+EOF
+cat &gt; /usr/bin/ld &lt;&lt; "EOF"
+#!/bin/bash
+/tools/bin/ld -nostdlib -L/usr/lib -L/lib $@
+EOF
+chmod 755 /usr/bin/{ld,gcc}
+ln -s gcc /usr/bin/cc</userinput></screen>
+
<caution><para>It is imperative at this point to stop and ensure that
the basic functions (compiling and linking) of the adjusted toolchain
are working as expected. To do this, perform a sanity