Enlazador (informática)


En informática , un enlazador o editor de enlaces es un programa de sistema informático que toma uno o más archivos objeto (generados por un compilador o ensamblador ) y los combina en un solo archivo ejecutable , archivo de biblioteca u otro archivo "objeto".

Una versión más simple que escribe su salida directamente en la memoria se llama cargador , aunque la carga generalmente se considera un proceso separado. [1] [2]

Los programas informáticos normalmente se componen de varias partes o módulos; estas partes/módulos no necesitan estar contenidos dentro de un solo archivo de objeto y, en tales casos, se refieren entre sí por medio de símbolos como direcciones en otros módulos, que se asignan a direcciones de memoria cuando se vinculan para su ejecución. Normalmente, un archivo de objeto puede contener tres tipos de símbolos:

Para la mayoría de los compiladores, cada archivo de objeto es el resultado de compilar un archivo de código fuente de entrada. Cuando un programa comprende varios archivos de objetos, el enlazador combina estos archivos en un programa ejecutable unificado, resolviendo los símbolos a medida que avanza.

Los enlazadores pueden tomar objetos de una colección llamada biblioteca o biblioteca en tiempo de ejecución . La mayoría de los enlazadores no incluyen toda la biblioteca en la salida; incluyen solo los archivos [ aclaración necesaria ] a los que hacen referencia otros archivos de objetos o bibliotecas. Por lo tanto, la vinculación de bibliotecas puede ser un proceso iterativo, con algunos módulos referenciados que requieren la vinculación de módulos adicionales, y así sucesivamente. Las bibliotecas existen para diversos propósitos, y una o más bibliotecas del sistema suelen estar vinculadas de forma predeterminada.

El enlazador también se ocupa de organizar los objetos en el espacio de direcciones de un programa . Esto puede implicar la reubicación del código que asume una dirección base específica en otra base. Dado que un compilador rara vez sabe dónde residirá un objeto, a menudo asume una ubicación base fija (por ejemplo, cero ). La reubicación del código de máquina puede implicar la reorientación de saltos, cargas y almacenamientos absolutos.


Una ilustración del proceso de vinculación. Los archivos de objetos y las bibliotecas estáticas se ensamblan en una nueva biblioteca o ejecutable