我一直对链接器的工作方式感到困惑,而且这是一个难以搜索的主题。
为了说明我的问题并为答案提供框架,我将记录我已经知道(或认为我已经知道)的内容。 我可能非常错误:)
首先,每个.cpp文件都会被编译成一个中间文件(Posix / ELF的.o文件和Win / PE的.obj文件)。 中间文件包含由它构建的.cpp定义的所有符号,并具有要正确解析外部链接所需的指令。 作为此扩展,Posix系统允许您将.o文件组合成.a文件(这似乎没有做更多的事情?哪个命令可以实现这个?)。 .lib是Win / PE等效于Posix .a文件吗?
接下来,所有的中间文件都会被链接在一起,解析外部依赖关系,然后就形成了可执行文件。 我漏掉了什么步骤吗?
谢谢!