默认情况下大多数程序和库的编译带有调试符号。(类似 gcc 的 -g
选项。)这意味着当你调试一个包含调试信息的已编译的程序或库时,调试程序不仅能提供内存地址,还能提供变量和实例的名字。
然而,包含这些调试符号明显的增大了程序或库。下面这个例子说明了这些符号有多么占地方:
一个有调试符号的二进制 bash : 1200 KB
一个无调试符号的二进制 bash : 480 KB
有调试符号的 Glibc 和 GCC 文件 (/lib
和
/usr/lib
):
87 MB
无调试符号的 Glibc 和 GCC 文件: 16 MB
大小可能会因为所使用的编译器和 C 语言库的不同而改变,但是当比较有无调试符号的程序时,大小可能相差 2 到 5 倍。
因为大多数用户从来不会在他们的系统软件上使用调试器,没了这些调试符号可以省下很多磁盘空间。下一页将会告诉你如何剥离程序和库中所有的调试符号。