我认为自己是一位经验丰富的程序员;但是,到今天我完全无法解释目标文件是什么,或者它包含什么。我不知道为什么GCC需要-fPIC
选项来创建共享库。我不知道链接器真正是什么,或者它是如何工作的。我不知道ranlib
,libtool
,nm
等真正做了什么。我知道如何反汇编二进制文件,但我不知道如何解释我所看到的内容。
简而言之,像许多程序员一样,我对编译过程的理解非常有限;在我看来,可用的文档适用于已知的人,以及联机帮助页。
谷歌也没有太大的帮助,维基百科也没有。因此,是否有对程序文本转换为可执行二进制文件的基本概念的入门级解释?
答案 0 :(得分:2)
你想要John Levine的书 Linkers and Loaders ,可以在his website免费找到未经修正的证明(但我建议找到出版的书)。代码生成后构建链中的所有内容都清楚地涵盖了很多示例。我不能高度推荐它。