Linux From Scratch - Version 6.8-rc1

Chapter 5. Constructing a Temporary System

5.8.
Adjusting the Toolchain

Now that the temporary C libraries have been installed, all tools
compiled in the rest of this chapter should be linked against these
libraries. In order to accomplish this, the cross-compiler's specs
file needs to be adjusted to point to the new dynamic linker in
/tools.

This is done by dumping the compiler's “specs” file to a location where it will look for
it by default. A simple sed substitution then alters the
dynamic linker that GCC will use. The principle here is to find all
references to the dynamic linker file in /lib or possibly /lib64 if the host system is 64-bit capable, and
adjust them to point to the new location in /tools.

For the sake of accuracy, it is recommended to use a copy-and-paste
method when issuing the following command. Be sure to visually
inspect the specs file to verify that it has properly adjusted all
references to the dynamic linker location. Refer to Section 5.2,
“Toolchain Technical Notes,” for the default name of
the dynamic linker, if necessary.

If everything is working correctly, there should be no errors, and
the output of the last command will be of the form:

[Requesting program interpreter: /tools/lib/ld-linux.so.2]

Note that /tools/lib, or /tools/lib64 for 64-bit machines appears as the
prefix of the dynamic linker.

If the output is not shown as above or there was no output at all,
then something is wrong. Investigate and retrace the steps to find
out where the problem is and correct it. This issue must be
resolved before continuing on. Something may have gone wrong with
the specs file amendment above. In this case, redo the specs file
amendment, being careful to copy-and-paste the commands.

Once all is well, clean up the test files:

rm -v dummy.c a.out

Note

Building Binutils in the next section will serve as an additional
check that the toolchain has been built properly. If Binutils fails
to build, it is an indication that something has gone wrong with
the previous Binutils, GCC, or Glibc installations.