在缺省情况下,大多数程序和库都是带调试符号(gcc option -g)编译的。
一个带调试记号编译的程序意味着用户能够通过调试器运行一个程序或库,并且这些调试器具有用户友好的输出。但是,这些调试记号明显地增大了程序和库。
在您想知道这些调试记号是否真的带来很大的差异之前,请看下面的统计资料,相信您可以从这些资料里得出您自己的结论。
带调试记号的动态Bash二进制文件: 1200 KB
不带调试记号的动态Bash二进制文件: 480 KB
带调试记号的/lib和/usr/lib下的文件(包括glibc和gcc文件): 87 MB
不带调试记号的/lib和/usr/lib下的文件(包括glibc和gcc文件): 16 MB
根据使用的编译器和链接动态程序的C库的版本的不同,文件的大小可能会有些不同,但是比较带与不带调试记号的程序的比较结果应该不会改变,大概是2~5倍大小。
由于大多数人都不会在系统软件上使用调试器,把这些符号去掉就能节省大量的空间。
从二进制文件(必须是a.out或ELF二进制)移去调试记号的方法是执行strip --strip-debug filename。可以使用通配符将多个文件中的调试记号剥除(类似这样的用法:strip --strip-debug $LFS/static/bin/*)。
为了你的方便,第九章有一节使用一个简单的命令把所有调试符号从你系统的程序和库文件中剥去。更多关于优化的信息请见提示:http://hints.us.linuxfromscratch.org/hints/optimization.txt.