揭示我的无知:为什么静态库项目(在Visual Studio中不是)在项目属性页面中有链接器设置?我认为“连接”是一个很大的问题:图书馆,但显然我从根本上误解了一些东西。为什么C++静态库项目没有链接器设置?
10
A
回答
13
制作的可执行是一个三个步骤的过程:
- 编译器转换成在 源代码到目标文件。
- 一个 存档器/库管理员将对象 文件一起分组到库(此 步是可选的)。
- 链接链接 将目标文件和库一起创建为 完整的可执行文件。
库只是一个对象的集合,它根据定义还没有被链接。链接器不用于创建库,所以它没有链接器选项是有道理的。
4
因为你不链接它,纯粹而简单。
链接是将所有对象文件和库集中在一起以创建可执行文件的行为。在一个静态库项目中,你并没有创建一个可执行文件,你只需创建一个稍后将被链接的库。例如(这是UNIX而不是Windows,但概念相似),您可以使用编译器cc
将源文件转换为目标文件,并使用归档程序ar
将这些文件转换为库。链接器(或链接编辑器)ld
不需要参与,直到您想进入下一步并将您的库包含到可执行文件中。
5
链接是将目标文件组合成可执行文件(和动态库,它们与可执行文件格式相似)的过程。
静态库没有链接,它们是对象文件的简单归档。
当您在项目中引用静态库时,将从库中提取对象文件并将其与特定项目的文件链接在一起。
相关问题
- 1. XCode4没有链接新编译的静态库(从属)项目
- 2. 为什么项目依赖影响链接器设置
- 3. C/C++:静态链接库和目标文件有什么不同?
- 4. 为什么我的Go应用程序没有静态链接?
- 5. 将静态C++库链接到c库
- 6. 无法将C++项目与openssl静态库链接
- 7. 为什么__stat&__fstat静态链接?
- 8. 什么是静态库,静态链接动态库和动态链接动态库的.lib文件?
- 9. 为什么你必须链接库和设置包含目录
- 10. 链接器找不到在静态库(目标C)
- 11. 为什么bootstrap选项没有设置?
- 12. ARC支持静态库链接到非ARC项目导致链接器错误
- 13. 如何静态链接到另一个项目,该项目本身需要链接到其他静态库?
- 14. 为什么g ++没有链接到我创建的动态库?
- 15. UNIX:静态库链接到静态库
- 16. 为什么我的项目没有清洁就不能链接?
- 17. 为什么我的Kobold2D项目中没有链接“CCTextureCache + CCBigImageExtensions”?
- 18. 静态链接库和动态链接库之间的区别是什么
- 19. C++静态库太大了,为什么?
- 20. 什么是静态和动态链接
- 21. 动态链接库中静态变量的行为(C/C++)
- 22. 为什么Libtool不想链接静态库?
- 23. 将静态库链接到类库项目
- 24. 静态链接一个库有什么好处和坏处?
- 25. 为什么我不能使用gcc链接具有C接口的混合C/C++静态库?
- 26. 静态链接一个Qt项目
- 27. C++ 11类的静态结构编译,为什么不链接?
- 28. 为什么在C++静态DLL链接中使用LIB?
- 29. 项目中的静态库:为什么静态库使用的框架也需要添加到项目中?
- 30. 为什么Java中没有静态类
因此,如果一个可执行文件有一个静态库作为输入,它使用它自己的目标文件结合它自己来构建exe文件? – vargonian
是的。请参阅[这里](http://kishorekumar.net/pecoff_v8.1.htm)关于VC++使用的COFF格式的细节。 –