Revelando mi ignorancia: ¿Por qué un proyecto de biblioteca estática (en Visual Studio en mi caso) no tiene configuración de vinculador en la página de propiedades del proyecto? Pensé que "vincular" era una especie de gran problema para las bibliotecas, pero al parecer básicamente no entiendo bien algo.¿Por qué un proyecto de biblioteca estática de C++ no tiene configuración de vinculador?
Respuesta
Hacer un ejecutable es un proceso de tres pasos:
- Un compilador transforma el código fuente en a los ficheros objeto.
- Un archivador/bibliotecario agrupa los archivos objetos juntos en bibliotecas (este paso es opcional).
- Un vinculador vincula los archivos objeto y las bibliotecas para crear un ejecutable completo.
Una biblioteca es solo una colección de objetos, que por definición aún no se han vinculado. El vinculador no se usa para crear la biblioteca, por lo que tiene sentido que no haya opciones de enlazador para él.
Porque no lo vincula, puro y simple.
La vinculación es el acto de reunir todos los archivos de objetos y bibliotecas para crear un archivo ejecutable. En un proyecto de biblioteca estática no está haciendo un ejecutable, solo está creando una biblioteca que luego se vinculará.
Por ejemplo (y esto es UNIX en lugar de Windows, pero los conceptos son similares), usaría el compilador cc
para convertir sus archivos fuente en archivos de objetos y el archivador ar
para convertirlos en una biblioteca. El vinculador (o el editor de enlaces) ld
no necesita participar hasta que desee pasar al siguiente paso e incluir su biblioteca en un archivo ejecutable.
La vinculación es un proceso de combinación de archivos de objetos en ejecutables (y bibliotecas dinámicas, que tienen un formato similar al de los ejecutables).
Las bibliotecas estáticas no están vinculadas, son simples archivos de archivos de objeto.
Cuando hace referencia a la biblioteca estática en su proyecto, los archivos de objeto se extraen de la biblioteca y se vinculan con archivos de un proyecto particular.
- 1. ¿Por qué no se encuentran los encabezados de biblioteca estática?
- 2. Averigüe qué funciones tiene una biblioteca C estática
- 3. Netbeans: ¿cómo incluir otro proyecto de biblioteca estática de C++?
- 4. ¿Por qué no puedo encontrar gcc mi biblioteca estática?
- 5. Biblioteca estática (.lib) al proyecto de Python
- 6. ¿Por qué no __tribuye __ ((constructor)) trabajo en una biblioteca estática?
- 7. ¿Cómo crear una biblioteca estática de un proyecto de Xcode?
- 8. ¿Por qué el indicador del vinculador de la biblioteca a veces tiene que ir al final usando GCC?
- 9. ¿Por qué Libtool no quiere vincularse con una biblioteca estática?
- 10. C++ Configuración de la biblioteca de registro
- 11. ¿Por qué los símbolos de biblioteca estática no están incluidos en dSYM durante el archivo?
- 12. ¿Por qué C# no tiene bibliotecas estáticas de estilo C++?
- 13. ¿Por qué C no tiene paquete privado?
- 14. Cómo agregar una biblioteca estática externa a un proyecto de Visual C++ 2010 Express
- 15. Xcode 4 compilación Dependencia de biblioteca estática con configuración de configuración diferente
- 16. Encabezados para mi biblioteca estática no encontrada
- 17. C++ biblioteca de configuración liviana
- 18. ¿Tiene C# un equivalente de clase anidada estática de Java?
- 19. Xcode: configuración del proyecto frente a la configuración de destino
- 20. ¿Por qué no se puede colocar un .aidl en un proyecto de biblioteca?
- 21. ¿Por qué no puedo agregar una referencia de proyecto de biblioteca de clase a un proyecto de Silverlight?
- 22. ¿Qué es una buena biblioteca de archivos de configuración para c que no es xml (preferiblemente tiene enlaces de python)?
- 23. ¿Por qué mi biblioteca estática es tan grande?
- 24. Biblioteca estática con dependencias
- 25. ¿Por qué Objective-C no tiene espacios de nombres?
- 26. C# clase estática ¿por qué usar?
- 27. ¿Por qué mi proyecto de eclipse no tiene una ruta de compilación?
- 28. Variable global compartida en la biblioteca estática de C++
- 29. ¿Por qué boost no tiene un make_scoped()?
- 30. ¿Por qué recibo estos errores de vinculador 'ya definidos'?
Entonces, si un ejecutable tiene una lib estática como entrada, usa sus archivos de objeto combinados con los suyos para construir el exe? – vargonian
Sí. Ver [aquí] (http://kishorekumar.net/pecoff_v8.1.htm) detalles sobre el formato COFF utilizado por VC++. –