为什么C ++静态库项目没有链接器设置?

时间:2011-06-25 06:33:15

标签: visual-studio linker static-libraries

揭示我的无知:为什么静态库项目(在我的情况下在Visual Studio中)在项目属性页面中没有链接器设置?我认为“链接”是一个很大的问题:图书馆,但显然我从根本上误解了一些东西。

3 个答案:

答案 0 :(得分:15)

制作可执行文件的过程分为三个步骤:

  1. 编译器转换源代码 对象文件。
  2. 一种 archiver / librarian将对象分组 将文件一起放入库中(这个 步骤是可选的。)
  3. 链接器链接 目标文件和库一起创建 完整的可执行文件。
  4. 库只是一个对象集合,根据定义尚未链接。链接器不用于创建库,因此它没有链接器选项是有道理的。

答案 1 :(得分:5)

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

静态库没有链接,它们是目标文件的简单存档。

在项目中引用静态库时,目标文件从库中提取并与特定项目的文件链接在一起。

答案 2 :(得分:4)

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

链接是将所有目标文件和库组合在一起以创建可执行文件的行为。在静态库项目中,您没有创建可执行文件,您只需创建一个稍后将链接的库。

例如(这是UNIX而不是Windows,但概念类似),您可以使用编译器cc将源文件转换为目标文件,并使用归档器ar来转换那些进入图书馆。在您想要进入下一步并将库包含在可执行文件中之前,链接器(或链接编辑器)ld不需要参与。