2011-06-25 178 views

回答

13

制作的可执行是一个三个步骤的过程:

  1. 编译器转换成在 源代码到目标文件。
  2. 一个 存档器/库管理员将对象 文件一起分组到库(此 步是可选的)。
  3. 链接链接 将目标文件和库一起创建为 完整的可执行文件。

库只是一个对象的集合,它根据定义还没有被链接。链接器不用于创建库,所以它没有链接器选项是有道理的。

4

因为你不链接它,纯粹而简单。

链接是将所有对象文件和库集中在一起以创建可执行文件的行为。在一个静态库项目中,你并没有创建一个可执行文件,你只需创建一个稍后将被链接的库。例如(这是UNIX而不是Windows,但概念相似),您可以使用编译器cc将源文件转换为目标文件,并使用归档程序ar将这些文件转换为库。链接器(或链接编辑器)ld不需要参与,直到您想进入下一步并将您的库包含到可执行文件中。

5

链接是将目标文件组合成可执行文件(和动态库,它们与可执行文件格式相似)的过程。

静态库没有链接,它们是对象文件的简单归档。

当您在项目中引用静态库时,将从库中提取对象文件并将其与特定项目的文件链接在一起。

+1

因此,如果一个可执行文件有一个静态库作为输入,它使用它自己的目标文件结合它自己来构建exe文件? – vargonian

+1

是的。请参阅[这里](http://kishorekumar.net/pecoff_v8.1.htm)关于VC++使用的COFF格式的细节。 –

相关问题