Um arquivo de objeto compartilhado, identificado pela extensão .so, é uma biblioteca vinculada dinamicamente usada primariamente no Linux e outros sistemas operacionais do tipo Unix. Diferentemente das bibliotecas estáticas, que são vinculadas a um programa no 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 múltiplos programas compartilhem o mesmo código de biblioteca, reduzindo o tamanho geral dos executáveis e economizando espaço em disco. Além disso, objetos compartilhados podem ser atualizados independentemente dos programas que os utilizam, possibilitando a implantação de correções de bugs e aprimoramentos de recursos sem a necessidade de recompilação das aplicações dependentes. O linker dinâmico, tipicamente ld-linux.so, é responsável por resolver dependências e carregar os objetos compartilhados necessários no espaço de endereçamento do programa. Objetos compartilhados contêm código compilado, dados e informações de realocação que permitem ao linker 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.