ld -s 到底是什么意思?
What does ld -s mean exactly?
我试过了
$ man ld
他们为 -s 选项提供的定义有点超出我的理解水平。剥离符号到底是什么意思?请指定我认为有用的任何链接。谢谢。
ld
将许多目标文件链接到二进制文件中。此二进制文件通常包含一个符号 table,其中包含程序中使用的所有符号的名称、类型、大小和地址。
有时需要省略此 table,例如,当您想要较小的二进制文件时(在大型程序中,符号 table 可以包含数兆字节的符号)或者当您不想泄露有关程序如何实现的信息时——请记住,符号 table 包含所有函数和(静态)变量名称。
传统上,strip
实用程序用于此目的。 strip
获取二进制文件并删除其符号 table 以及执行程序并非严格需要的其他元数据,例如调试信息。然而,当时链接和磁盘 IO 速度很慢,人们向链接器添加了一个 -s
(用于 strip)选项,以使其不首先发出此信息,从而稍微加快了链接阶段。
我试过了
$ man ld
他们为 -s 选项提供的定义有点超出我的理解水平。剥离符号到底是什么意思?请指定我认为有用的任何链接。谢谢。
ld
将许多目标文件链接到二进制文件中。此二进制文件通常包含一个符号 table,其中包含程序中使用的所有符号的名称、类型、大小和地址。
有时需要省略此 table,例如,当您想要较小的二进制文件时(在大型程序中,符号 table 可以包含数兆字节的符号)或者当您不想泄露有关程序如何实现的信息时——请记住,符号 table 包含所有函数和(静态)变量名称。
传统上,strip
实用程序用于此目的。 strip
获取二进制文件并删除其符号 table 以及执行程序并非严格需要的其他元数据,例如调试信息。然而,当时链接和磁盘 IO 速度很慢,人们向链接器添加了一个 -s
(用于 strip)选项,以使其不首先发出此信息,从而稍微加快了链接阶段。