Denne delen er valgfri. Hvis den tiltenkte brukeren ikke er en programmerer og ikke planlegger å gjøre noen feilsøking på systemprogramvaren, kan systemstørrelsen reduseres med omtrent 2 GB ved å fjerne feilsøkingssymbolene og unødvendig symboltabell oppføringer fra binærfiler og biblioteker. Dette medfører ingen andre ulemper enn å ikke kunne feilsøke programvaren fullstendig lenger.
De fleste som bruker kommandoene nevnt nedenfor, opplever ikke noen vanskeligheter. Det er imidlertid lett å gjøre en skrivefeil og gjør det nye systemet ubrukelig, så før du kjører strip kommandoer, er det en god idé å lage en sikkerhetskopiering av LFS systemet i gjeldende tilstand.
En strip kommando med
--strip-unneeded
alternativet
fjerner alle feilsøkingssymboler fra en binær eller et bibliotek. Og
det fjerner alle symboltabelloppføringer som ikke er nødvendig for
linkeren (for statiske biblioteker) eller dynamisk linker (for
dynamisk koblede binære filer og delte biblioteker).
Feilsøkingssymbolene for utvalgte biblioteker er plassert i separate filer. Denne feilsøkingsinformasjonen er nødvendig hvis det kjøres regresjonstester som bruker valgrind eller gdb senere i BLFS.
Merk at strip vil
overskrive binær eller bibliotek filen den behandler. Dette kan
krasje prosessene som bruker kode eller data fra filen. Hvis
prosessen som kjører strip selv er påvirket, kan
binærfilen eller biblioteket som blir strippet bli ødelagt og kan
gjøre systemet helt ubrukelig. For å unngå det, kopierer vi noen
biblioteker og binærfiler inn i /tmp
,
stripper dem der, og installer dem tilbake med install kommandoen. Les den
relaterte oppføringen i Section 8.2.1,
“Oppgraderingsproblemer” for begrunnelsen for å bruke
install kommandoen her.
ELF lasterens navn er ld-linux-x86-64.so.2 på 64-bits systemer og ld-linux.so.2 på 32-bits systemer. Konstruksjonen nedenfor velger riktig navn for gjeldende arkitektur, unntatt noe som slutter med “g”, i tilfelle kommandoene nedenfor allerede har vært kjør.
save_usrlib="$(cd /usr/lib; ls ld-linux*[^g]) libc.so.6 libthread_db.so.1 libquadmath.so.0.0.0 libstdc++.so.6.0.30 libitm.so.1.0.0 libatomic.so.1.2.0" cd /usr/lib for LIB in $save_usrlib; do objcopy --only-keep-debug $LIB $LIB.dbg cp $LIB /tmp/$LIB strip --strip-unneeded /tmp/$LIB objcopy --add-gnu-debuglink=$LIB.dbg /tmp/$LIB install -vm755 /tmp/$LIB /usr/lib rm /tmp/$LIB done online_usrbin="bash find strip" online_usrlib="libbfd-2.39.so libhistory.so.8.1 libncursesw.so.6.3 libm.so.6 libreadline.so.8.1 libz.so.1.2.12 $(cd /usr/lib; find libnss*.so* -type f)" for BIN in $online_usrbin; do cp /usr/bin/$BIN /tmp/$BIN strip --strip-unneeded /tmp/$BIN install -vm755 /tmp/$BIN /usr/bin rm /tmp/$BIN done for LIB in $online_usrlib; do cp /usr/lib/$LIB /tmp/$LIB strip --strip-unneeded /tmp/$LIB install -vm755 /tmp/$LIB /usr/lib rm /tmp/$LIB done for i in $(find /usr/lib -type f -name \*.so* ! -name \*dbg) \ $(find /usr/lib -type f -name \*.a) \ $(find /usr/{bin,sbin,libexec} -type f); do case "$online_usrbin $online_usrlib $save_usrlib" in *$(basename $i)* ) ;; * ) strip --strip-unneeded $i ;; esac done unset BIN LIB save_usrlib online_usrbin online_usrlib
Et stort antall filer vil bli rapportert som at filformatet ikke er gjenkjent. Disse advarslene kan trygt ignoreres. De indikerer at disse filene er skript i stedet for binære filer.