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.