O arquivo libsqlite3.so é apenas um link simbólico para o nome do arquivo de biblioteca com versão completa, libsqlite3.so.0.8.6 . Em tempo de execução, o carregador dinâmico só conhece a biblioteca totalmente versionada. Isso é verdade para a maioria das bibliotecas compartilhadas. Existem algumas bibliotecas que não são versionadas e estão disponíveis apenas como libnspr4.so , por exemplo. No entanto, essas bibliotecas também são empacotadas corretamente, conforme apropriado.
Os programas não devem tentar copiar o link sem versão da biblioteca. Se quiserem fazer isso, eles devem usar o nome do arquivo libsqlite3.so.0 , por exemplo, que está instalado no pacote da biblioteca binária, em vez do pacote -dev fornecido. Desta forma, o programa continuará funcionando se o sqlite3 quebrar a compatibilidade da API em algum momento e houver um libsqlite3.so.1 . Usar libsqlite3.so.0 garantiria que o programa usaria a API da biblioteca na qual foi escrita para trabalhar.