在缺省情况下,大多数程序和库都是带调试符号(gcc 参数 -g)编译的。当调试一个带调试符号的程序时,调试器不仅能给出内存地址,还能给出函数和变量的名字。但是,这些调试符号明显地增大了程序和库。想知道这些调试符能带来多大的差异,请看下面的统计资料:
带调试符号的动态Bash二进制文件: 1200 KB
不带调试符号的动态Bash二进制文件: 480 KB
带调试符号的 Glibc 和 GCC 文件 (位于 /lib 和 /usr/lib 目录): 87 MB
不带调试符号的 Glibc 和 GCC文件: 16 MB
根据使用的编译器和连接动态程序的C库的版本的不同,文件的大小可能会有些不同,但是比较带与不带调试符号的程序的比较结果应该不会改变,大概是2~5倍大小。
由于大多数人都不会在系统软件上使用调试器,把这些符号去掉就能节省大量的空间。下一节将给您展示如何从程序和库文件中去除所有调试符号链接。附加的信息在系统优化信息里可以找到 http://www.linuxfromscratch.org/hints/downloads/files/optimization.txt