在缺省情况下,大多数程序和库都是带调试符号(使用 gcc 的 -g选项)编译的。这意味着, 当调试一个带调试符号的程序时,调试器不仅能给出内存地址,还能给出函数和变量的名字。
但是, 这些调试符号明显地增大了程序和库。 想知道这些调试符能带来多大的差异, 请看下面的统计资料:
带调试符号的 bash 二进制文件: 1200 KB
不带调试符号的 bash 二进制文件: 480 KB
带调试符号的Glibc 和 GCC 文件 (/lib
和
/usr/lib
) :
87 MB
不带调试符号的Glibc 和 GCC 文件: 16 MB
根据使用的编译器和 C库的不同,文件的大小可能会有所不同, 但是比较带调试符号与不带调试符号的程序的比较结果应该不会改变, 大概是 2~5 倍大小。
因为大多数用户从不在他们的系统软件上使用调试器,所以删除这些符号会节省大量的磁盘空间。 下一节将给您展示如何从程序和库文件中去除所有调试符号链接。