diff --git a/chapter08/aboutdebug.xml b/chapter08/aboutdebug.xml index d646b797e..e9b90d64b 100644 --- a/chapter08/aboutdebug.xml +++ b/chapter08/aboutdebug.xml @@ -17,8 +17,8 @@ the debugger can provide not only memory addresses, but also the names of the routines and variables. - However, the inclusion of these debugging symbols enlarges a - program or library significantly. The following is an example of the + The inclusion of these debugging symbols enlarges a + program or library significantly. Here are two examples of the amount of space these symbols occupy: @@ -28,7 +28,7 @@ A bash binary without debugging symbols: - 480 KB + 480 KB (60% smaller) Glibc and GCC files (/lib @@ -36,15 +36,14 @@ symbols: 87 MB - Glibc and GCC files without debugging symbols: 16 MB + Glibc and GCC files without debugging symbols: 16 MB (82% smaller) - Sizes may vary depending on which compiler and C library were used, - but when comparing programs with and without debugging symbols, the - difference will usually be a factor between two and five. - - Because most users will never use a debugger on their system software, + Sizes will vary depending on which compiler and C library were used, + but a program that has been stripped of debugging symbols is usually some + 50% to 80% smaller than its unstripped counterpart. + Because most users will never use a debugger on their system software, a lot of disk space can be regained by removing these symbols. The next section shows how to strip all debugging symbols from the programs and libraries. diff --git a/chapter08/cleanup.xml b/chapter08/cleanup.xml index c5db3440d..fc3b55aef 100644 --- a/chapter08/cleanup.xml +++ b/chapter08/cleanup.xml @@ -10,16 +10,16 @@ Cleaning Up - Finally, clean up some extra files left around from running tests: + Finally, clean up some extra files left over from running tests: rm -rf /tmp/* - There are also several files installed in the /usr/lib and /usr/libexec + There are also several files in the /usr/lib and /usr/libexec directories with a file name extension of .la. These are "libtool archive" - files. As already said, on a modern Linux system the libtool .la files are + files. On a modern Linux system the libtool .la files are only useful for libltdl. No libraries in LFS are expected to be loaded - by libltdl, and it's known that some .la files can cause BLFS packages - fail to build. Remove those files now: + by libltdl, and it's known that some .la files can break BLFS package + builds. Remove those files now: find /usr/lib /usr/libexec -name \*.la -delete find /usr/lib32 -name \*.la -delete diff --git a/chapter08/stripping.xml b/chapter08/stripping.xml index ecd0ee671..bceb94a37 100644 --- a/chapter08/stripping.xml +++ b/chapter08/stripping.xml @@ -12,39 +12,39 @@ This section is optional. If the intended user is not a programmer and does not plan to do - any debugging on the system software, the system size can be decreased - by about 2 GB by removing the debugging symbols and unneeded symbol table - entries from binaries and libraries. This causes no inconvenience other - than not being able to debug the software fully anymore. + any debugging of the system software, the system's size can be decreased + by some 2 GB by removing the debugging symbols, and some unnecessary symbol table + entries, from binaries and libraries. This causes no real inconvenience for + a typical Linux user. Most people who use the commands mentioned below do not - experience any difficulties. However, it is easy to make a typo and - render the new system unusable, so before running the + experience any difficulties. However, it is easy to make a mistake and + render the new system unusable. So before running the strip commands, it is a good idea to make a backup of the LFS system in its current state. - A strip command with + A strip command with the --strip-unneeded option removes all debug symbols - from a binary or library. And, it removes all symbol table entries not + from a binary or library. It also removes all symbol table entries not needed by the linker (for static libraries) or dynamic linker (for - dynamic-linked binaries and shared libraries). + dynamically linked binaries and shared libraries). - The debugging symbols for selected libraries are placed - in separate files. This debugging information is needed if running - regression tests that use The debugging symbols from selected libraries are preserved + in separate files. That debugging information is needed to run + regression tests with valgrind or gdb later in BLFS. + url='&blfs-book;/general/gdb.html'>gdb later, in BLFS. Note that strip will overwrite the binary or library file it is processing. This can crash the processes using code or data from - the file. If the process running strip itself is - affected, the binary or library being stripped can be destroyed and can - make the system completely unusable. To avoid it, we'll copy some libraries + the file. If the process running strip is + affected, the binary or library being stripped can be destroyed; this can + make the system completely unusable. To avoid this problem we copy some libraries and binaries into /tmp, strip them - there, and install them back with the install command. - Read the related entry in for the - rationale to use the install command here. + there, then reinstall them with the install command. + (The related entry in gives the + rationale for using the install command here.) The ELF loader's name is ld-linux-x86-64.so.2 on 64-bit systems and ld-linux.so.2 on 32-bit systems. The construct below selects the @@ -160,8 +160,8 @@ done unset BIN LIB save_usrlib online_usrbin online_usrlib - A large number of files will be reported as having their file - format not recognized. These warnings can be safely ignored. They - indicate that those files are scripts instead of binaries. + A large number of files will be flagged as errors because their file + format is not recognized. These warnings can be safely ignored. They + indicate that those files are scripts, not binaries.