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 | |
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')
-rw-r--r-- | chapter06/gcc.xml | 5 | ||||
-rw-r--r-- | chapter06/introduction.xml | 5 | ||||
-rw-r--r-- | chapter06/readjusting.xml | 51 | ||||
-rw-r--r-- | chapter06/revisedchroot.xml | 3 |
4 files changed, 24 insertions, 40 deletions
diff --git a/chapter06/gcc.xml b/chapter06/gcc.xml index b67e4ede7..e8c49be34 100644 --- a/chapter06/gcc.xml +++ b/chapter06/gcc.xml @@ -99,11 +99,6 @@ To support those packages, create this symlink:</para> <screen><userinput>ln -sv ../usr/bin/cpp /lib</userinput></screen> -<para>Many packages use the name <command>cc</command> to call the C -compiler. To satisfy those packages, create a symlink:</para> - -<screen><userinput>ln -sv gcc /usr/bin/cc</userinput></screen> - <note><para>At this point, it is strongly recommended to repeat the sanity check performed earlier in this chapter. Refer back to <xref linkend="ch-system-readjusting" role=","/> and repeat the check. If the results diff --git a/chapter06/introduction.xml b/chapter06/introduction.xml index 8ca571197..065baeeed 100644 --- a/chapter06/introduction.xml +++ b/chapter06/introduction.xml @@ -58,5 +58,10 @@ package. Following the installation instructions, there is a list of programs and libraries (along with brief descriptions of these) that the package installs.</para> +<note><para>At this point, you may wish to keep your finished temporary +tools for use in future LFS builds by creating a tarball of the +<filename class="directory">/tools</filename> directory and +storing it in a safe location.</para></note> + </sect1> 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 diff --git a/chapter06/revisedchroot.xml b/chapter06/revisedchroot.xml index b2f1b3afe..29eeba80a 100644 --- a/chapter06/revisedchroot.xml +++ b/chapter06/revisedchroot.xml @@ -18,8 +18,7 @@ exiting, use the following modified chroot command:</para> <para>The reason for this is that the programs in <filename class="directory">/tools</filename> are no longer needed. Since they are no longer needed you can delete the <filename class="directory">/tools</filename> -directory if so desired or tar it up and keep it to build another final -system.</para> +directory if so desired.</para> <note><para>Removing <filename class="directory">/tools</filename> will also remove the temporary copies of Tcl, Expect, and DejaGNU which were used for |