Ignore:
Timestamp:
02/07/2006 07:46:27 PM (19 years ago)
Author:
Manuel Canales Esparcia <manuel@…>
Children:
e02afe0
Parents:
1798edf
Message:

Ported r7357 and r7362 from trunk to alphabetical branch.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • chapter06/readjusting.xml

    r1798edf r529c103  
    11<?xml version="1.0" encoding="ISO-8859-1"?>
    2 <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
     2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
     3  "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
    34  <!ENTITY % general-entities SYSTEM "../general.ent">
    45  %general-entities;
    56]>
     7
    68<sect1 id="ch-system-readjusting">
    7 <title>Re-adjusting the Toolchain</title>
    8 <?dbhtml filename="readjusting.html"?>
     9  <?dbhtml filename="readjusting.html"?>
    910
    10 <para>Now that the final C libraries have been installed, it is time to adjust
    11 the toolchain again. The toolchain will be adjusted so that it will link any
    12 newly compiled program against these new libraries. This is a similar process
    13 used in the <quote>Adjusting</quote> phase in the beginning of <xref
    14 linkend="chapter-temporary-tools"/>, but with the adjustments reversed. In <xref
    15 linkend="chapter-temporary-tools"/>, the chain was guided from the host's
    16 <filename class="directory">/{,usr/}lib</filename> directories to the new
    17 <filename class="directory">/tools/lib</filename> directory. Now, the chain will
    18 be guided from that same <filename class="directory">/tools/lib</filename>
    19 directory to the LFS <filename class="directory">/{,usr/}lib</filename>
    20 directories.</para>
     11  <title>Re-adjusting the Toolchain</title>
    2112
    22 <para>First, backup the <filename class="directory">/tools</filename> linker, and
    23 replace it with the adjusted linker we made in chapter 5. We'll also create a
    24 link to its counterpart in <filename class="directory">/tools/$(gcc -dumpmachine)/bin</filename>.</para>
     13  <para>Now that the final C libraries have been installed, it is time to adjust
     14  the toolchain again. The toolchain will be adjusted so that it will link any
     15  newly compiled program against these new libraries. This is a similar process
     16  used in the <quote>Adjusting</quote> phase in the beginning of <xref
     17  linkend="chapter-temporary-tools"/>, but with the adjustments reversed. In <xref
     18  linkend="chapter-temporary-tools"/>, the chain was guided from the host's
     19  <filename class="directory">/{,usr/}lib</filename> directories to the new
     20  <filename class="directory">/tools/lib</filename> directory. Now, the chain will
     21  be guided from that same <filename class="directory">/tools/lib</filename>
     22  directory to the LFS <filename class="directory">/{,usr/}lib</filename>
     23  directories.</para>
     24
     25  <para>First, backup the <filename class="directory">/tools</filename> linker,
     26  and replace it with the adjusted linker we made in chapter 5. We'll also create
     27  a link to its counterpart in <filename class="directory">/tools/$(gcc
     28  -dumpmachine)/bin</filename>.</para>
    2529
    2630<screen><userinput>mv -v /tools/bin/{ld,ld-old}
     
    2933ln -sv /tools/bin/ld /tools/$(gcc -dumpmachine)/bin/ld</userinput></screen>
    3034
    31 <para>Next, amend the GCC specs file so that it points to the new
    32 dynamic linker, and so that GCC knows where to find its start files.
    33 A <command>perl</command> command accomplishes this:</para>
     35  <para>Next, amend the GCC specs file so that it points to the new
     36  dynamic linker, and so that GCC knows where to find its start files.
     37  A <command>perl</command> command accomplishes this:</para>
    3438
    3539<screen><userinput>gcc -dumpspecs | \
    3640perl -p -e 's@/tools/lib/ld-linux.so.2@/lib/ld-linux.so.2@g;' \
    37      -e 's@\*startfile_prefix_spec:\n@$_/usr/lib/ @g;' &gt; \
    38      `dirname $(gcc --print-libgcc-file-name)`/specs
    39 </userinput></screen>
     41    -e 's@\*startfile_prefix_spec:\n@$_/usr/lib/ @g;' &gt; \
     42    `dirname $(gcc --print-libgcc-file-name)`/specs</userinput></screen>
    4043
    41 <para>It is a good idea to visually inspect the specs file to verify the intended
    42 change was actually made.</para>
     44  <para>It is a good idea to visually inspect the specs file to verify the
     45  intended change was actually made.</para>
    4346
    44 <important><para>If working on a platform where the name of the
    45 dynamic linker is something other than
    46 <filename class="libraryfile">ld-linux.so.2</filename>, substitute
    47 <quote>ld-linux.so.2</quote> with the name of the platform's
    48 dynamic linker in the above commands. Refer back to <xref
    49 linkend="ch-tools-toolchaintechnotes" role=","/> if
    50 necessary.</para></important>
     47  <important>
     48    <para>If working on a platform where the name of the dynamic linker is
     49    something other than <filename class="libraryfile">ld-linux.so.2</filename>,
     50    substitute <quote>ld-linux.so.2</quote> with the name of the platform's
     51    dynamic linker in the above commands. Refer back to <xref
     52    linkend="ch-tools-toolchaintechnotes" role=","/> if necessary.</para>
     53  </important>
    5154
    52 <caution><para>It is imperative at this point to stop and ensure that
    53 the basic functions (compiling and linking) of the adjusted toolchain
    54 are working as expected. To do this, perform a sanity
    55 check:</para>
     55  <caution>
     56    <para>It is imperative at this point to stop and ensure that the basic
     57    functions (compiling and linking) of the adjusted toolchain are working
     58    as expected. To do this, perform a sanity check:</para>
    5659
    5760<screen><userinput>echo 'main(){}' &gt; dummy.c
     
    5962readelf -l a.out | grep ': /lib'</userinput></screen>
    6063
    61 <para>If everything is working correctly, there should be no errors,
    62 and the output of the last command will be (allowing for
    63 platform-specific differences in dynamic linker name):</para>
     64    <para>If everything is working correctly, there should be no errors,
     65    and the output of the last command will be (allowing for
     66    platform-specific differences in dynamic linker name):</para>
    6467
    6568<screen><computeroutput>[Requesting program interpreter: /lib/ld-linux.so.2]</computeroutput></screen>
    6669
    67 <para>Note that <filename class="directory">/lib</filename> is now
    68 the prefix of our dynamic linker.</para>
     70    <para>Note that <filename class="directory">/lib</filename> is now
     71    the prefix of our dynamic linker.</para>
    6972
    70 <para>Now make sure that we're setup to use the correct start files:</para>
     73    <para>Now make sure that we're setup to use the correct start files:</para>
    7174
    7275<screen><userinput>grep "/usr/lib/crt.* " dummy.log</userinput></screen>
    7376
    74 <para>If everything is working correctly, there should be no errors,
    75 and the output of the last command will be:</para>
     77    <para>If everything is working correctly, there should be no errors,
     78    and the output of the last command will be:</para>
    7679
    7780<screen><computeroutput>attempt to open /usr/lib/crt1.o succeeded
     
    7982attempt to open /usr/lib/crtn.o succeeded</computeroutput></screen>
    8083
    81 <para>Next make sure that we're using the correct libc:</para>
     84    <para>Next make sure that we're using the correct libc:</para>
    8285
    8386<screen><userinput>grep "/lib/libc.so.6 " dummy.log</userinput></screen>
    8487
    85 <para>If everything is working correctly, there should be no errors,
    86 and the output of the last command will be:</para>
     88    <para>If everything is working correctly, there should be no errors,
     89    and the output of the last command will be:</para>
    8790
    8891<screen><computeroutput>attempt to open /lib/libc.so.6 succeeded</computeroutput></screen>
    8992
    90 <para>Lastly, make sure GCC is using the correct dynamic linker:</para>
     93    <para>Lastly, make sure GCC is using the correct dynamic linker:</para>
    9194
    9295<screen><userinput>grep found dummy.log</userinput></screen>
    9396
    94 <para>If everything is working correctly, there should be no errors,
    95 and the output of the last command will be (allowing for
    96 platform-specific differences in dynamic linker name):</para>
     97    <para>If everything is working correctly, there should be no errors,
     98    and the output of the last command will be (allowing for
     99    platform-specific differences in dynamic linker name):</para>
    97100
    98101<screen><computeroutput>found ld-linux.so.2 at /lib/ld-linux.so.2</computeroutput></screen>
    99102
    100 <para>If the output does not appear as shown above or is not received
    101 at all, then something is seriously wrong. Investigate and retrace the
    102 steps to find out where the problem is and correct it. The most likely
    103 reason is that something went wrong with the specs file amendment
    104 above. Any issues will need to be resolved before continuing on with
    105 the process.</para>
     103    <para>If the output does not appear as shown above or is not received
     104    at all, then something is seriously wrong. Investigate and retrace the
     105    steps to find out where the problem is and correct it. The most likely
     106    reason is that something went wrong with the specs file amendment
     107    above. Any issues will need to be resolved before continuing on with
     108    the process.</para>
    106109
    107 <para>Once everything is working correctly, clean up the test
    108 files:</para>
     110    <para>Once everything is working correctly, clean up the test
     111    files:</para>
    109112
    110 <screen><userinput>rm -v dummy.c a.out dummy.log</userinput></screen></caution>
     113<screen><userinput>rm -v dummy.c a.out dummy.log</userinput></screen>
     114  </caution>
    111115
    112116</sect1>
    113 
Note: See TracChangeset for help on using the changeset viewer.