Um arquivo de objeto compartilhado, identificado pela extensão .so, é uma biblioteca vinculada dinamicamente usada principalmente no Linux e em outros sistemas operacionais do tipo Unix. Ao contrário das bibliotecas estáticas, que são vinculadas a um programa durante o tempo de compilação, os objetos compartilhados são carregados na memória em tempo de execução quando o programa é executado. Isso permite que vários programas compartilhem o mesmo código de biblioteca, reduzindo o tamanho total dos executáveis e economizando espaço em disco. Além disso, os objetos compartilhados podem ser atualizados independentemente dos programas que os utilizam, permitindo que correções de bugs e melhorias de recursos sejam implementadas sem a necessidade de recompilação das aplicações dependentes. O vinculador dinâmico, tipicamente o ld-linux.so, é responsável por resolver dependências e carregar os objetos compartilhados necessários no espaço de endereçamento do programa. Os objetos compartilhados contêm código compilado, dados e informações de realocação que permitem ao vinculador dinâmico posicionar corretamente o código e os dados na memória. Eles são um componente fundamental do sistema Linux, fornecendo uma maneira modular e eficiente de gerenciar a reutilização de código e as dependências do sistema.