|
@@ -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 &&
|
|
@@ -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 > /usr/bin/gcc << "EOF"
|
|
|
+#!/bin/bash
|
|
|
+/tools/bin/gcc -B/usr/lib $@
|
|
|
+EOF
|
|
|
+cat > /usr/bin/ld << "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
|