我一直对链接器的工作方式感到困惑,而且这是一个很难搜索的主题。
为了演示我的问题并为答案提供框架,我将写下到目前为止我所知道的(或认为我知道的)。我可能是非常错误的。:)
首先,每个 .cpp 文件都被构建到一个中间文件中(我相信 .o 代表 Posix/ELF 和 .obj 代表 Win/PE)。该中间文件包含由它构建的 .cpp 定义的所有符号,并说明了需要正确解析哪些外部链接。作为对此的扩展,Posix 系统允许您将 .o 文件合并到 .a 文件中(这似乎除了合并之外没有任何作用?这是什么命令?)。.lib 是 Posix .a 文件的 Win/PE 等价物吗?
接下来,将中间文件链接在一起,解决外部依赖关系,并获得可执行文件。我错过了任何步骤吗?
谢谢!