LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 772|回复: 1

关于调试符号,怎么可以去掉呢??第六章中。

[复制链接]
发表于 2002-12-25 13:13:12 | 显示全部楼层 |阅读模式
关于调试符号

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

并没有发现文档中说的第九章中的简单的命令。。。
发表于 2002-12-25 13:16:42 | 显示全部楼层
说了是第九章啊,如下:
“ 要说的是,我们使用的--strip-debug参数在正常情况下不会有任何危害。它不会把文件中重要的东西剥离。在程序上使用它也是安全的(但不要在库文件上使用--库文件会被毁坏)。但它并不是绝对安全,而且你能得到的空间也不是很多。如果你的硬盘空间很紧张,这样做是很有价值的,你自己决定吧。请参考strip的手册页(man page)来获取其它的参数。总的看法是,为了安全起见,不要在库文件上运行strip(除了 --strip-debug外)。

find $LFS/{,usr/,usr/local/}{bin,sbin,lib} -type f \
   -exec /usr/bin/strip --strip-debug '{}' ';'

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表