Hay 2 argumentos para tener bibliotecas compartidas:
- Ayuda a reducir el espacio en disco.
- Cuando se actualiza una biblioteca compartida, todos los binarios que dependen de ella obtienen la actualización.
Hay principalmente un inconveniente para las bibliotecas compartidas:
- Ellos (pueden) introducir el infierno de dependencia.
En las computadoras de escritorio, la primera ventaja ya no es válida. La pérdida de espacio en disco no es un gran problema en estos días.
Tener archivos binarios estáticos nos permitiría ser mucho mejores administradores de paquetes; quiero decir, el infierno de la dependencia sería cosa del pasado. Agregar un programa sería simplemente agregar un binario; finalmente una carpeta para permitirle manejar sus archivos. Eliminar un programa sería simplemente eliminar este archivo. Dependencias? Ido.
La segunda ventaja sigue en pie, pero creo que la ventaja de los binarios estáticos en las computadoras de escritorio lo supera. Quiero decir, incluso los nuevos lenguajes como Go compilan todos sus binarios a pesar de las ventajas de las bibliotecas compartidas, debido a la conveniencia.
Dado que una de las principales ventajas de las bibliotecas compartidas ya no es un gran problema, ¿las bibliotecas estáticas en C todavía están mal vistas? Si es así, ¿por qué?