Si has llegado hasta este post pero todavía no conoces nada sobre bibliotecas, te aconsejo que leas primero ¿Qué es una biblioteca? Una vez leído, te será mucho más fácil entender los conceptos de bibliotecas estáticas y de bibliotecas dinámicas.

Una biblioteca dinámica es aquella que se carga a la hora de arrancar un programa. A diferencia de las bibliotecas estáticas, las bibliotecas dinámicas utilizan recursos independientes al ejecutable que las llama. Es decir, una biblioteca dinámica no es copiada al programa durante el proceso de compilación. Así, durante la ejecución de nuestro programa, en el momento en el que este necesite recursos de las bibliotecas, este los buscará en ellas. En el supuesto de que se borrase la biblioteca, el programa daría un error al no poder encontrarla.
Algunas diferencias entre las bibliotecas estáticas y dinámicas son:
- Como al compilar un programa con una biblioteca estática esta es copiada en el código, el tamaño del ejecutable será mayor que si se utilizan bibliotecas dinámicas.
- Una vez la biblioteca estática se ha enlazado al programa durante el proceso de compilación, esta puede ser borrada y el programa seguirá funcionando. En caso de utilizar una biblioteca dinámica, obtendremos un error.
- Utilizando una biblioteca estática, el ejecutable no tiene que buscar en ningún otro archivo externo, por lo que su ejecución será más rápida que si se utilizan bibliotecas dinámicas.
- Un cambio en una biblioteca estática no afecta al programa. Un cambio en una biblioteca dinámica sí afecta al programa.
Para seguir aprendiendo…
UC3M: Librerías estáticas y dinámicas
Medium: Creating and using dynamic libraries (C)
Linux Terminal: man gcc (junto con algunos flags, utilizado para crear bibliotecas dinámicas).