Enlace estático y dinámico
Hay dos tipos de ejecutables binarios: vinculados estáticamente y vinculados dinámicamente. Primero acerca de los vinculados estáticamente : cuando un programa quiere llamar a una función de biblioteca, se refiere a ella por su nombre. Al construir el programa desde la fuente, todas las funciones de la biblioteca utilizadas en el programa se copian de la biblioteca al programa. El programa contiene su propio código y el código de las funciones de biblioteca que utiliza. Luego, en los lugares de llamada, el nombre se cambia a la dirección de la función correspondiente en el programa. Este proceso se llama vinculación porque vincula el nombre de una función con la función misma, su implementación. Se llama estático , porque el enlace no se puede cambiar después de que se haya creado el programa.
Los programas vinculados dinámicamente funcionan de manera diferente: el programa también se refiere a las funciones de la biblioteca por su nombre. Al compilar el programa, se ensamblan y almacenan dos listas junto con el programa: una lista de las funciones de la biblioteca que se utilizan en qué lugares, y una lista de las bibliotecas que contienen las funciones utilizadas por el programa. Eso es todo por construir el programa.
Más tarde, en el momento de la ejecución , un programa auxiliar especial, el denominado vinculador dinámico, busca lugares específicos en el sistema de archivos para cada biblioteca en la lista de bibliotecas y lo carga en la memoria. Ahora el enlazador dinámico sabe en qué direcciones de memoria están disponibles las funciones de la biblioteca. Utiliza la primera lista para escribir la dirección correcta en todos los lugares que llaman a las funciones de la biblioteca. Entonces se puede ejecutar el programa vinculado dinámicamente.