我认为自己是一个相当有经验的程序员;但是,直到今天我完全无法解释目标文件是什么,或者它包含什么。我不知道为什么 GCC 需要-fPIC
创建共享库的选项。我不知道链接器到底是什么,也不知道它是如何工作的。我不知道ranlib
, libtool
, nm
, 等到底是做什么的。我知道如何反汇编二进制文件,但我不确定如何解释我看到的内容。
简而言之,像许多程序员一样,我对编译过程的理解极为有限;在我看来,可用的文档似乎是针对已经知道的人的,联机帮助页也是如此。
谷歌也没有太大帮助,维基百科也没有。因此,对于将程序文本转换为可执行二进制文件的基本概念,是否存在入门级解释?