- Enlazado Estático:
Una biblioteca estática
es aquella que se enlaza en tiempo de compilación (en oposición a una
de enlace dinámico, que se enlaza en tiempo de ejecución). La ventaja de
este tipo de enlace es que hace que un programa no dependa de ninguna biblioteca
(puesto que las enlazó al compilar), haciendo más fácil su distribución.
El enlazado permite al programador y al
propio sistema operativo dividir un programa en varios archivos llamados
módulos, que pueden ensamblarse por separado y enlazarse en una ocasión
posterior, el enlace puede ser de naturaleza estática o dinámica. El enlace
estático da como resultado, un archivo ejecutable con todos los símbolos y
módulos respectivos incluidos en dicho archivo.
- Enlazado Dinámico:
Un enlace
dinámico es aquel en el cual una biblioteca de código es enlazada cuando un
determinado programa se ejecuta (en oposición
a un enlace estático, que se
produce en tiempo de compilación). La ventaja de este tipo de enlace es
que el programa es más liviano, y que evita la duplicación de
código (por ejemplo, cuando dos programas requieren usar la misma biblioteca,
se necesita sólo una copia de ésta).
Las
bibliotecas
de enlace dinámico, o bibliotecas compartidas, suelen encontrarse en
directorios específicos del sistema operativo, de forma que, cada vez que un
programa necesite usar alguna, el sistema operativo conozca el lugar en el que
se encuentra, para así poder enlazarla. Esto ocasiona algunos problemas
de dependencias, principalmente entre diferentes versiones de una misma
biblioteca.
Muchos programas tienen procedimientos a los que
no llaman, salvo en circunstancias excepcionales. Haciendo uso de bibliotecas
de enlace dinámico, después del ensamblaje, podemos enlazar cada procedimiento
en el momento en que es llamado.