Concordando com o comentário de @siblynx , a glibc fornece uma gama de compatibilidade. A maneira como faz isso (no intervalo de liberação para a versão 6) é usar o controle de versão de símbolos: à medida que cada símbolo (função ou dados) é introduzido, há uma versão correspondente ao símbolo, para que existe uma maneira de vincular a versão correta automaticamente.
Se o comportamento (principalmente o binário interface ) for alterado no futuro, seu aplicativo será carregado usando a interface antiga com versão. Indo para trás, a versão pode não existir e o aplicativo não pôde ser carregado com êxito.
Em um nível mais grosseiro, a maioria das bibliotecas compartilhadas no RHEL também é versionada, mas a glibc suporta o intervalo de compatibilidade através de versões de símbolos dentro de uma única biblioteca compartilhada.
Leitura adicional: