Un archivo de objeto compartido, identificado por la extensión .so (shared object), es una biblioteca enlazada dinámicamente utilizada principalmente en Linux y otros sistemas operativos tipo Unix. A diferencia de las bibliotecas estáticas, que se enlazan a un programa en tiempo de compilación, los objetos compartidos se cargan en memoria en tiempo de ejecución cuando se ejecuta el programa. Esto permite que múltiples programas compartan el mismo código de biblioteca, reduciendo el tamaño general de los ejecutables y ahorrando espacio en disco. Además, los objetos compartidos pueden actualizarse independientemente de los programas que los utilizan, lo que permite implementar correcciones de errores y mejoras de características sin requerir la recompilación de las aplicaciones dependientes. El enlazador dinámico, típicamente ld-linux.so, es responsable de resolver dependencias y cargar los objetos compartidos necesarios en el espacio de direcciones del programa. Los objetos compartidos contienen código compilado, datos e información de relocalización que permite al enlazador dinámico posicionar correctamente el código y los datos en la memoria. Son un componente fundamental del sistema Linux, proporcionando una forma modular y eficiente de gestionar la reutilización de código y las dependencias.