2011-06-25 15 views

Respuesta

13

Hacer un ejecutable es un proceso de tres pasos:

  1. Un compilador transforma el código fuente en a los ficheros objeto.
  2. Un archivador/bibliotecario agrupa los archivos objetos juntos en bibliotecas (este paso es opcional).
  3. 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.

4

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.

5

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

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

+1

Sí. Ver [aquí] (http://kishorekumar.net/pecoff_v8.1.htm) detalles sobre el formato COFF utilizado por VC++. –

Cuestiones relacionadas