1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
- <!ENTITY % general-entities SYSTEM "../general.ent">
- %general-entities;
- ]>
- <sect1 id="ch-system-strippingagain">
- <?dbhtml filename="strippingagain.html"?>
- <title>Stripping Again</title>
- <para>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 90 MB by removing the debugging symbols from binaries and
- libraries. This causes no inconvenience other than not being able to
- debug the software fully anymore.</para>
- <para>Most people who use the command 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
- <command>strip</command> command, it is a good idea to make a
- backup of the LFS system in its current state.</para>
- <para>First back up some libraries that are needed when running regression
- tests in BLFS packages:</para>
- <screen><userinput>save_libs="ld- libatomic libc- libcilkrts ligfortran libgo libgomp"
- save_libs="$save_libs libitm libmpx libobjc libpthread libquadmath"
- save_libs="$save_libs libsanitizer libstdc++ libthread_db libvtv"
- mkdir -p /var/dbg/lib /var/dbg/usr/lib
- for lib in $save_libs
- do
- find /usr/lib -name ${lib}*so* -type f -exec cp {} /var/dbg/usr/lib \;
- find /lib -name ${lib}*so* -type f -exec cp {} /var/dbg/lib \;
- done</userinput></screen>
- <para>Before performing the stripping, take special care to ensure that
- none of the binaries that are about to be stripped are running. If
- unsure whether the user entered chroot with the command given in
- <xref linkend="ch-system-chroot" role=","/> first exit from
- chroot:</para>
- <screen role="nodump"><userinput>logout</userinput></screen>
- <para>Then reenter it with:</para>
- <screen role="nodump"><userinput>chroot $LFS /tools/bin/env -i \
- HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
- PATH=/bin:/usr/bin:/sbin:/usr/sbin \
- /tools/bin/bash --login</userinput></screen>
- <para>Now the binaries and libraries can be safely stripped:</para>
- <screen><userinput>/tools/bin/find /usr/lib -type f -name \*.a \
- -exec /tools/bin/strip --strip-debug {} ';'
- /tools/bin/find /lib /usr/lib -type f -name \*.so* \
- -exec /tools/bin/strip --strip-unneeded {} ';'
- /tools/bin/find /{bin,sbin} /usr/{bin,sbin,libexec} -type f \
- -exec /tools/bin/strip --strip-all {} ';'</userinput></screen>
- <para>A large number of files will be reported as having their file
- format not recognized. These warnings can be safely ignored. These
- warnings indicate that those files are scripts instead of
- binaries.</para>
- <para>If desired, restore the saved libraries with the debug data
- intact. The files can restored now or just held for later use. Note
- that several of the files cannot be copied directly after rebooting
- to the new LFS system. Later use requires booting to another system,
- mounting the LFS partition, and then copying the files.</para>
- <screen><userinput>cp -av /var/dbg/lib/* /lib
- cp -av /var/dbg/usr/lib/* /usr/lib</userinput></screen>
- </sect1>
|