Um arquivo de objeto compartilhado, tipicamente com a extensão .so, é uma biblioteca vinculada dinamicamente (dynamically linked library) utilizada no Linux e em outros sistemas operacionais tipo Unix. Diferentemente das bibliotecas estáticas, que são incorporadas a um programa no tempo de compilação (compile time), os objetos compartilhados são carregados na memória no tempo de execução (runtime) quando o programa é executado. Isso permite que múltiplos programas compartilhem o mesmo código de biblioteca, o que reduz o tamanho geral dos executáveis e conserva os recursos do sistema. Os objetos compartilhados são essenciais para o desenvolvimento de software modular, permitindo que os desenvolvedores criem componentes reutilizáveis que podem ser facilmente atualizados e mantidos independentemente das aplicações que os utilizam. Eles são uma parte fundamental do sistema Linux, fornecendo um mecanismo para reutilização de código e gerenciamento eficiente de memória. O processo de vinculação dinâmica é tratado pelo vinculador/carregador dinâmico (dynamic linker/loader), que resolve as dependências e carrega os objetos compartilhados necessários no espaço de endereçamento do programa. Atualizações nos objetos compartilhados podem ser implementadas sem a necessidade de recompilar as aplicações que dependem deles, desde que a Interface Binária de Aplicação (ABI - Application Binary Interface) permaneça compatível. Isso torna os objetos compartilhados um componente crucial do ecossistema Linux, facilitando a atualização e manutenção de software.