¿Cuáles son las diferencias entre un compilador y un enlazador?

2 minutos de lectura

¿Cuales son las diferencias entre un compilador y un enlazador
smruti

¿Cuál es la diferencia entre un compilador y un enlazador en C?

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

Una vez que el compilador realiza este paso, se necesita otro paso para crear un ejecutable funcional que se pueda invocar y ejecutar, es decir, asociar las llamadas a funciones (por ejemplo) que el código compilado necesita invocar para funcionar. Por ejemplo, su código podría llamar sprintf, que es una rutina en la biblioteca estándar de C. Su código no tiene nada que ver con el servicio real proporcionado por sprintf, solo informa que debe llamarse, pero el código real reside en algún lugar de la biblioteca C común. Para realizar este (y muchos otros) enlaces, el enlazador debe ser invocado. Después de vincular, obtiene el ejecutable real que se puede ejecutar.

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

    – sleske

    30 de septiembre de 2010 a las 14:14

Un compilador genera archivos de código objeto (lenguaje de máquina) a partir del código fuente.

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

Muchos IDE los invocan en sucesión, por lo que en realidad nunca verá el enlazador en funcionamiento. Algunos lenguajes/compiladores no tienen un enlazador distinto y el compilador realiza el enlace como parte de su trabajo.

En palabras simples -> Linker entra en acción cada vez que un archivo ‘.obj’ necesita ser vinculado con sus funciones de biblioteca como el compilador no entiende qué es (scanf o printf..etc) , el compilador simplemente convierte el archivo ‘.c’ en el archivo ‘.obj’ si no hay ningún error sin comprender las funciones de biblioteca que usamos. Entonces, para convertir el archivo ‘obj’ en ‘exe’ (archivo ejecutable) necesitamos el enlazador porque hace que el compilador entienda las funciones de la biblioteca.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad