diff options
author | Jeremy Huntwork <jhuntwork@linuxfromscratch.org> | 2006-01-26 03:45:12 +0000 |
---|---|---|
committer | Jeremy Huntwork <jhuntwork@linuxfromscratch.org> | 2006-01-26 03:45:12 +0000 |
commit | 313ca76210ced5b65eb0a30594959d6fc8ae5115 (patch) | |
tree | 9c6734b6c10d6d4d9c133c4af53a2c36e96f1f05 /chapter06/readjusting.xml | |
parent | ae437d3255865d8e9541728702dbe95b3c37c12e (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.xml | 51 |
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 && @@ -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 |