这个部分是可选的。如果预期的用户不是一个程序员或者不打算对系统软件进行任何调试,通过从二进制文件和库中删除调试符号能减少 90MB 的系统大小。除了不能完全调试软件,这不会导致任何不便。
大部分人使用下面提到的命令并不会感到任何困难。然而,很容易出现错误并导致新的系统不可用,因此在运行 strip 命令之前,对当前状态的 LFS 系统进行备份是个好主意。
首先将选定库的调试符号文件分开放置。如果要在后续的 BLFS 中用 valgrind 或 gdb 做回归测试,那么调试信息还有用武之地。
save_lib="ld-2.30.so libc-2.30.so libpthread-2.30.so libthread_db-1.0.so" cd /lib for LIB in $save_lib; do objcopy --only-keep-debug $LIB $LIB.dbg strip --strip-unneeded $LIB objcopy --add-gnu-debuglink=$LIB.dbg $LIB done save_usrlib="libquadmath.so.0.0.0 libstdc++.so.6.0.27 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 strip --strip-unneeded $LIB objcopy --add-gnu-debuglink=$LIB.dbg $LIB done unset LIB save_lib save_usrlib
在进行清理无用内容之前,格外注意确保要删除的二进制文件没有正在运行:
exec /tools/bin/bash
现在可以安心的清除二进制文件和库:
/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* -a ! -name \*dbg \) \ -exec /tools/bin/strip --strip-unneeded {} ';' /tools/bin/find /{bin,sbin} /usr/{bin,sbin,libexec} -type f \ -exec /tools/bin/strip --strip-all {} ';'
该命令会报告有很大数目的文件不能识别它们的格式。你可以安全地忽略这些警告。这些警告表示这些文件是脚本而不是二进制文件。