ld -s到底意味着什么?

时间:2017-04-06 05:08:06

标签: assembly linker nasm gnu ld

我试过

$ man ld

他们为-s选项提供的定义略高于我的理解水平。剥离符号到底意味着什么?请指出我认为有用的链接。谢谢。

1 个答案:

答案 0 :(得分:2)

ld将许多目标文件链接到二进制文件中。此二进制文件通常包含一个符号表,其中包含程序中使用的所有符号的名称,类型,大小和地址。

有时需要省略此表,例如,当您想要一个较小的二进制文件时(在大型程序中,符号表可以包含多个兆字节的符号)或者当您不想要时泄漏有关程序如何实现的信息 - 记住,符号表包含所有函数和(静态)变量名称。

传统上,strip实用程序用于此目的。 strip获取二进制文件并删除其符号表以及执行程序时不需要的其他元数据,例如调试信息。但是,当时链接和磁盘IO很慢,并且人们为链接器添加了-s(for strip)选项,以便它不会首先发出此信息,从而加快了链接阶段的速度。