在Linux中,剥离二进制文件和未剥离二进制文件有何区别?

28

请问有人能够解释一下在Linux中剥离和未剥离二进制文件的实际区别吗?

经过一些谷歌搜索,我发现未剥离的二进制文件包含调试信息,而剥离的二进制文件则不包含。


1
看起来你在谷歌上已经找到了答案。你还需要知道什么? - Barmar
3
这是现在Google搜索中排名第一的答案。 - starbeamrainbowlabs
1个回答

25
尽管你从谷歌上找到了答案,但没被剥离的二进制文件中会内置调试信息。因此,如果使用gcc 的 -g标志进行编译可执行文件,则它包含调试信息。而被剥离的二进制文件通常会从 exe 中删除这些不必要的调试信息,以减小 exe 的大小。

谢谢您的回复。那么,我该如何从使用gcc的-g标志编译的可执行文件中删除调试信息? - Droider
2
@Droider:strip 是可以在已编译的目标文件上运行的工具。它还有各种命令行选项,您可以使用这些选项来配置要删除哪些信息。例如,-g 仅删除 gcc -g 添加的调试信息。gcc -s:从可执行文件中删除所有符号表和重定位信息。strip:从目标文件中丢弃符号。 - user3414693
符号表中的符号被从哪个符号表中删除? - 425nesp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接