6.58. 关于调试符号

在缺省情况下,大多数程序和库都是带调试符号(使用 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