大多数程序和库在默认情况下编译时都包含调试符号(使用 gcc 的 -g 选项)。 这意味着当调试包含调试信息的程序或库时,调试器不仅可以提供内存地址,还可以提供例程和变量的名称。
然而,包含这些调试符号会显著扩大程序或库的大小。 以下是这些符号占用空间大小的示例:
带有调试符号的 bash 二进制文件:1200 KB
不带调试符号的 bash 二进制文件:480 KB
Glibc 和 GCC 文件(/lib和/usr/lib)带有调试符号:87 MB
Glibc 和 GCC 文件不带调试符号:16 MB
大小可能因使用的编译器和 C 库而异,但当比较带有和不带调试符号的程序时,差异通常在两到五倍之间。
因为大多数用户永远不会在其系统软件上使用调试器,所以通过删除这些符号可以回收大量磁盘空间。 下一节介绍如何从程序和库中剥离所有调试符号。 有关系统优化的更多信息,请访问 http://www.linuxfromscratch.org/hints/downloads/files/optimization.txt。