Ignore:
Timestamp:
08/08/2004 02:11:09 AM (20 years ago)
Author:
Gerard Beekmans <gerard@…>
Branches:
6.0
Children:
5ba3d1d
Parents:
6e41459
Message:

Completed global edits for upcoming 6.0 release

git-svn-id: http://svn.linuxfromscratch.org/LFS/branches/testing/BOOK@4000 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

File:
1 edited

Legend:

Unmodified
Added
Removed
  • chapter06/readjusting.xml

    r6e41459 ref13657  
    88<?dbhtml filename="readjusting.html"?>
    99
    10 <para>Now that the new and final C libraries have been installed, it's time to
    11 adjust our toolchain again. We'll adjust it so that it will link any newly
    12 compiled program against these new libraries. This is in fact the same thing we
    13 did in the <quote>Adjusting</quote> phase in the beginning of the previous
    14 chapter, even though it looks like the reverse: then we guided the chain from
    15 the host's <filename class="directory">/{,usr/}lib</filename> to the new
    16 <filename class="directory">/tools/lib</filename>, now we guide it from that
    17 same <filename class="directory">/tools/lib</filename> to the LFS's <filename
    18 class="directory">/{,usr/}lib</filename>.</para>
     10<para>Now that the new and final C libraries have been installed, it
     11is time to adjust the toolchain again. The toolchain will be adjusted
     12so that it will link any newly compiled program against these new
     13libraries. This is the same process used in the
     14<quote>Adjusting</quote> phase in the beginning of <xref
     15linkend="chapter-temporary-tools"/>, even though it looks to be
     16reversed -- in that chapter, the chain was guided from the host's
     17<filename class="directory">/{,usr/}lib</filename> directories to the
     18new <filename class="directory">/tools/lib</filename> directory. Now,
     19the chain will be guided from that same <filename
     20class="directory">/tools/lib</filename> directory to the LFS's
     21<filename class="directory">/{,usr/}lib</filename> directories.</para>
    1922
    20 <para>First we adjust the linker. For this we retained the
    21 source and build directories from the second pass over Binutils. Install the
    22 adjusted linker by running the following from within the
    23 <filename class="directory">binutils-build</filename> directory:</para>
     23<para>Start by adjusting the linker. The source and build directories
     24from the second pass over Binutils were retained for this purpose.
     25Install the adjusted linker by running the following command from
     26within the <filename class="directory">binutils-build</filename>
     27directory:</para>
    2428
    2529<screen><userinput>make -C ld INSTALL=/tools/bin/install install</userinput></screen>
    2630
    27 <note><para>If you somehow missed the earlier warning to retain the Binutils
    28 source and build directories from the second pass in
    29 <xref linkend="chapter-temporary-tools"/>, or otherwise accidentally deleted them or just
    30 don't have access to them, don't worry, all is not lost. Just ignore the above
    31 command. The result will be that the next package, Binutils, will link against
    32 the C libraries in <filename class="directory">/tools</filename> rather
    33 than in <filename class="directory">/{,usr/}lib</filename>. This is not ideal,
    34 however, our testing has shown that the resulting Binutils program binaries
    35 should be identical.</para></note>
     31<note><para>If the earlier warning to retain the Binutils source and
     32build directories from the second pass in <xref
     33linkend="chapter-temporary-tools"/> was missed, or if they were
     34accidentally deleted or are inaccessible, ignore the above command.
     35The result will be that the next package, Binutils, will link against
     36the C libraries in <filename class="directory">/tools</filename>
     37rather than in <filename class="directory">/{,usr/}lib</filename>.
     38This is not ideal, however, testing has shown that the resulting
     39Binutils program binaries should be identical.</para></note>
    3640
    37 <para>From now on every compiled program will link <emphasis>only</emphasis>
    38 against the libraries in <filename class="directory">/usr/lib</filename> and
     41<para>From now on, every compiled program will link only against the
     42libraries in <filename class="directory">/usr/lib</filename> and
    3943<filename class="directory">/lib</filename>. The extra
    40 <parameter>INSTALL=/tools/bin/install</parameter> is needed because the Makefile
    41 created during the second pass still contains the reference to
    42 <command>/usr/bin/install</command>, which we obviously haven't installed yet.
    43 Some host distributions contain a <filename class="symlink">ginstall</filename>
    44 symbolic link which takes precedence in the Makefile and thus can cause a
    45 problem here. The above command takes care of this also.</para>
     44<parameter>INSTALL=/tools/bin/install</parameter> option is needed
     45because the <filename>Makefile</filename> file created during the
     46second pass still contains the reference to
     47<command>/usr/bin/install</command>, which has not been installed yet.
     48Some host distributions contain a <filename
     49class="symlink">ginstall</filename> symbolic link which takes
     50precedence in the <filename>Makefile</filename> file and can cause a
     51problem here. The above command takes care of this issue.</para>
    4652
    47 <para>You can now remove the Binutils source and build directories.</para>
     53<para>Remove the Binutils source and build directories now.</para>
    4854
    49 <para>The next thing to do is to amend our GCC specs file so that it points
    50 to the new dynamic linker. Just like earlier on, we use a sed to accomplish
    51 this:</para>
     55<para>Next, amend the GCC specs file so that it points to the new
     56dynamic linker. A sed to accomplish this just like before:</para>
    5257
    5358<!-- Ampersands are needed to allow cut and paste -->
     
    5661    `gcc --print-file specs`</userinput></screen>
    5762
    58 <para>Again, cutting and pasting the above is recommended. And just like
    59 before, it is a good idea to visually inspect the specs file to verify the
    60 intended change was actually made.</para>
     63<para>Cutting and pasting the above is recommended. It is a good idea
     64to visually inspect the specs file to verify the intended change was
     65actually made.</para>
    6166
    62 <important><para>If you are working on a platform where the name of the dynamic
    63 linker is something other than <filename>ld-linux.so.2</filename>, you
    64 <emphasis>must</emphasis> substitute <filename>ld-linux.so.2</filename> with the
    65 name of your platform's dynamic linker in the above commands. Refer back to
    66 <xref linkend="ch-tools-toolchaintechnotes"/> if necessary.</para></important>
     67<important><para>If working on a platform where the name of the
     68dynamic linker is something other than
     69<filename>ld-linux.so.2</filename>, substitute
     70<filename>ld-linux.so.2</filename> with the name of the platform's
     71dynamic linker in the above commands. Refer back to <xref
     72linkend="ch-tools-toolchaintechnotes"/> if
     73necessary.</para></important>
    6774
    68 
    69 <caution><para>It is imperative at this point to stop and ensure that the
    70 basic functions (compiling and linking) of the adjusted toolchain are working
    71 as expected. For this we are going to perform a simple sanity check:</para>
     75<caution><para>It is imperative at this point to stop and ensure that
     76the basic functions (compiling and linking) of the adjusted toolchain
     77are working as expected. To do this, perform a simple sanity
     78check:</para>
    7279
    7380<screen><userinput>echo 'main(){}' &gt; dummy.c
     
    7582readelf -l a.out | grep ': /lib'</userinput></screen>
    7683
    77 <para>If everything is working correctly, there should be no errors, and the
    78 output of the last command will be (allowing for platform specific differences
    79 in dynamic linker name):</para>
     84<para>If everything is working correctly, there should be no errors,
     85and the output of the last command will be (allowing for platform
     86specific differences in dynamic linker name):</para>
    8087
    8188<screen><computeroutput>[Requesting program interpreter: /lib/ld-linux.so.2]</computeroutput></screen>
     
    8491the prefix of our dynamic linker.</para>
    8592
    86 <para> If you did not receive the output
    87 as shown above, or received no output at all, then something is seriously wrong.
    88 You will need to investigate and retrace your steps to find out where the
    89 problem is and correct it. There is no point in continuing until this is done.
    90 Most likely something went wrong with the specs file amendment above.</para>
     93<para>If the output does not appear as shown above or is not received
     94at all, then something is seriously wrong. Investigate and retrace the
     95steps to find out where the problem is and correct it. The most likely
     96reason is that something went wrong with the specs file amendment
     97above. Any issues will need to be resolved before continuing on with
     98the process.</para>
    9199
    92 <para>Once you are satisfied that all is well, clean up the test files:</para>
     100<para>Once everything is working correctly, clean up the test
     101files:</para>
    93102
    94 <screen><userinput>rm dummy.c a.out</userinput></screen>
    95 </caution>
    96 
     103<screen><userinput>rm dummy.c a.out</userinput></screen></caution>
    97104
    98105</sect1>
     106
Note: See TracChangeset for help on using the changeset viewer.