2010-09-30 17 views

Respuesta

57

El compilador convierte el código escrito en un lenguaje de programación legible para el hombre en una representación de código de máquina que su procesador entiende. Este paso crea archivos objeto.

Una vez que este paso lo realiza el compilador, se necesita otro paso para crear un ejecutable operativo que pueda invocarse y ejecutarse, es decir, asociar las llamadas de función (por ejemplo) que su código compilado necesita invocar para trabajo. Por ejemplo, su código podría llamar al sprintf, que es una rutina en la biblioteca estándar de C. Su código no tiene nada que haga el servicio real provisto por sprintf, simplemente informa que debe ser llamado, pero el código real reside en algún lugar de la biblioteca C común. Para realizar este (y muchos otros) enlaces, se debe invocar el vinculador. Después de vincular, obtienes el ejecutable real que se puede ejecutar.

+20

+1 buena explicación. Tenga en cuenta que en la mayoría de los sistemas operativos, en realidad hay * dos * vinculadores involucrados: el enlazador que se ejecuta después de la compilación y produce el archivo ejecutable (generalmente llamado "enlazador") y el enlazador que enlaza en bibliotecas cargadas dinámicamente (también conocidas como .so o. dll) en el momento de la ejecución (generalmente llamado "enlazador dinámico"). – sleske

19

Un compilador genera archivos de código objeto (lenguaje de máquina) desde el código fuente.

A linker combina estos archivos de código objeto en un archivo ejecutable.

Muchos IDEs los invocan en sucesión, por lo que nunca se ve realmente el enlazador en funcionamiento. Algunos lenguajes/compiladores no tienen un enlazador distinto y el compilador realiza los enlaces como parte de su trabajo.

Cuestiones relacionadas