许多程序和库在默认情况下被编译为带有调试符号的二进制文件 (通过使用 gcc 的 -g
选项)。这意味着在调试这些带有调试信息的程序和库时,调试器不仅能给出内存地址,还能给出子程序和变量的名称。
然而,包含这些调试符号会显著增大程序或库的体积。下面是两个表现调试符号占用空间的例子:
一个有调试符号的 bash 二进制程序:1200 KB
一个没有调试符号的 bash 二进制程序:480 KB (小 60%)
带有调试符号的 Glibc 和 GCC 文件 (/lib
和
/usr/lib
目录中):87 MB
没有调试符号的 Glibc 和 GCC 文件:16 MB (小 82%)
具体的文件大小与使用的编译器和 C 库相关,但是移除调试符号的程序通常比移除调试符号前小 50% 到 80%。由于大多数用户永远不会用调试器调试系统软件,可以通过移除它们的调试符号,回收大量磁盘空间。下一节展示如何从系统程序和库中移除所有调试符号。