4

我认为自己是一个相当有经验的程序员;但是,直到今天我完全无法解释目标文件是什么,或者它包含什么。我不知道为什么 GCC 需要-fPIC创建共享库的选项。我不知道链接器到底是什么也不知道它是如何工作的。我不知道ranlib, libtool, nm, 等到底是做什么的。我知道如何反汇编二进制文件,但我不确定如何解释我看到的内容。

简而言之,像许多程序员一样,我对编译过程的理解极为有限;在我看来,可用的文档似乎是针对已经知道的人的,联机帮助页也是如此。

谷歌也没有太大帮助,维基百科也没有。因此,对于将程序文本转换为可执行二进制文件的基本概念,是否存在入门级解释?

4

1 回答 1

2

您想要 John Levine 的书Linkers and Loaders,可以在他的网站上免费找到未更正的证明(但我建议查找已出版的书)。代码生成后构建链中的所有内容都被清晰地覆盖并提供了很好的示例。我不能高度推荐它。

于 2013-10-19T10:38:20.410 回答