出售域名  LinuxTags

6.59. 关于调试符号

在默认的情况下,大多数程序和库都是带调试符号(使用 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 找到。


出售域名  LinuxTags

host by aosp.me  CDN