Why doesn't a C++ static library project have linker settings?

筅森魡賤 提交于 2020-01-22 17:52:49

问题


Revealing my ignorance: Why doesn't a static library project (in Visual Studio in my case) have linker settings in the project properties page? I thought "linking" was kind of a big deal re: libraries, but apparently I fundamentally misunderstand something.


回答1:


Making an executable is a three step process:

  1. A compiler transforms source code in to object files.
  2. An archiver/librarian groups the object files together into libraries (this step is optional).
  3. A linker links the object files and libraries together to create a complete executable.

A library is just a collection of objects, which by definition have not been linked yet. The linker is not used to create the library, so it makes sense that there would be no linker options for it.




回答2:


Linking is a process of combining object files into executables (and dynamic libraries, which have similar to executables format).

Static libraries aren't linked, they are simple archives of object files.

When you reference static library in your project, object files are extracted from library and linked together with files of particular project.




回答3:


Because you don't link it, pure and simple.

Linking is the act of pulling together all your object files and libraries to create an executable. In a static library project you're not making an executable, you're just creating a library which will later be linked.

For example (and this is UNIX rather than Windows, but the concepts are similar), you would use the compiler cc to turn your source files into object files and the archiver ar to turn those into a library. The linker (or linkage editor) ld does not need to take part until you wanted to go to the next step and include your library into an executable.



来源:https://stackoverflow.com/questions/6476286/why-doesnt-a-c-static-library-project-have-linker-settings

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!