From d32239446ba4bfb4f259cf7cef7626cae2283c34 Mon Sep 17 00:00:00 2001 From: Alex Gronenwoud Date: Thu, 13 Nov 2003 22:31:27 +0000 Subject: Moving most of chapter 6 intermezzos into a single file. git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@3081 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689 --- chapter06/adjustingtoolchain.xml | 96 ---------------------------------------- 1 file changed, 96 deletions(-) delete mode 100644 chapter06/adjustingtoolchain.xml (limited to 'chapter06/adjustingtoolchain.xml') diff --git a/chapter06/adjustingtoolchain.xml b/chapter06/adjustingtoolchain.xml deleted file mode 100644 index a5606ad54..000000000 --- a/chapter06/adjustingtoolchain.xml +++ /dev/null @@ -1,96 +0,0 @@ - -Re-adjusting the toolchain - - -Now that the new C libraries have been installed, it's time to re-adjust -our toolchain. We'll adjust it so that it will link any newly compiled program -against the new C libraries. Basically, this is the reverse of what we did -in the "locking in" stage in the beginning of the previous chapter. - -The first thing to do is to adjust the linker. For this we retained the -source and build directories from the second pass over Binutils. Install the -adjusted linker by running the following from within the -binutils-build directory: - -make -C ld INSTALL=/tools/bin/install install - -If you somehow missed the earlier warning to retain the Binutils -source and build directories from the second pass in Chapter 5 or otherwise -accidentally deleted them or just don't have access to them, don't worry, all is -not lost. Just ignore the above command. The result will be that the next -package, Binutils, will link against the Glibc libraries in -/tools rather than -/usr. This is not ideal, however, our -testing has shown that the resulting Binutils program binaries should be -identical. - -From now on every compiled program will link only -against the libraries in /usr/lib and -/lib. The extra -INSTALL=/tools/bin/install is needed because the Makefile -created during the second pass still contains the reference to -/usr/bin/install, which we obviously haven't installed yet. -Some host distributions contain a ginstall -symbolic link which takes precedence in the Makefile and thus can cause a -problem here. The above command takes care of this also. - -You can now remove the Binutils source and build directories. - -The next thing to do is to amend our GCC specs file so that it points -to the new dynamic linker. Just like earlier on, we use a sed to accomplish -this: - - - -SPECFILE=/tools/lib/gcc-lib/*/*/specs && -sed -e 's@ /tools/lib/ld-linux.so.2@ /lib/ld-linux.so.2@g' \ -    $SPECFILE > newspecfile && -mv -f newspecfile $SPECFILE && -unset SPECFILE - -Again, cutting and pasting the above is recommended. And just like -before, it is a good idea to check the specs file to ensure the intended -changes were actually made. - -If you are working on a platform where the name of the dynamic -linker is something other than ld-linux.so.2, you -must substitute ld-linux.so.2 with the -name of your platform's dynamic linker in the above commands. Refer back to - if necessary. - - - - -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. For this we are going to perform a simple sanity check: - -echo 'main(){}' > dummy.c -gcc dummy.c -readelf -l a.out | grep ': /lib' - -If everything is working correctly, there should be no errors, and the -output of the last command will be: - -
[Requesting program interpreter: /lib/ld-linux.so.2]
- -If you did not receive the output as shown above, or received no output at -all, then something is seriously wrong. You will need to investigate and retrace -your steps to find out where the problem is and correct it. There is no point in -continuing until this is done. Most likely something went wrong with the specs -file amendment above. Note especially that /lib now appears -as the prefix of our dynamic linker. Of course, if you are working on a platform -where the name of the dynamic linker is something other than -ld-linux.so.2, then the output will be slightly -different. - -Once you are satisfied that all is well, clean up the test files: - -rm dummy.c a.out -
- - - - -
- -- cgit v1.2.3-54-g00ecf