ld -s 到底是什么意思?

What does ld -s mean exactly?

我试过了

$ man ld

他们为 -s 选项提供的定义有点超出我的理解水平。剥离符号到底是什么意思?请指定我认为有用的任何链接。谢谢。

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

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

传统上,strip 实用程序用于此目的。 strip 获取二进制文件并删除其符号 table 以及执行程序并非严格需要的其他元数据,例如调试信息。然而,当时链接和磁盘 IO 速度很慢,人们向链接器添加了一个 -s(用于 strip)选项,以使其不首先发出此信息,从而稍微加快了链接阶段。