Em sistemas operacionais Unix e tipo Unix, um soname é um campo de dados em um arquivo de objeto compartilhado.[1] O soname é uma cadeia de caracteres usada como um "nome lógico" que descreve a funcionalidade do objeto (normalmente, este nome é igual ao nome de arquivo da biblioteca, ou a um prefixo thereof, e.g. libc.so.6
).
O soname é normalmente usado para fornecer informações de compatibilidade de versões anteriores. Por exemplo, se as versões 1.0 a 1.9 da biblioteca compartilhada libx
fornecem interface idêntica, elas teriam todas os mesmos soname, e.g. libx.so.1
. Se o sistema apenas inclui a versão 1.3 daquele objeto compartilhado, com o nome de arquivo libx.so.1.3
, o campo soname do objeto compartilhado diz ao sistema que ele pode ser usado para preencher a dependência para um binário que foi originalmente compilado usando a versão 1.2.
Se a interface binária de aplicação (application binary interface - ABI) de uma biblioteca altera-se de forma que programas dependentes seriam quebrados, o soname seria incrementado, e.g. de libx.so.5
para libx.so.6
.
O GNU linker usa o -hnome
ou -soname=nome
para especificar o campo de nome da biblioteca. Internamente, o linker criará um campo DT_SONAME
e o populará com nome
.
Dado qualquer arquivo de objeto compartilhado, pode-se usar o seguinte comando para obter a informação de dentro do arquivo de biblioteca usando objdump:
objdump -p libx.so.1.3 | grep SONAME
Ver também
Referências
Ligações externas