Re: Sobre nomeação de pacotes de libs...
Em Sat, 5 Jul 2003 02:42:52 -0300, Ágney Lopes Roth Ferraz <agney@users.sourceforge.net> escreveu:
> André,
Hup!
> na verdade, as bibiotecas estao sendo migradas.
> explico melhor (pelo que entendi):
> as bilbiotecas estao sendo compiladas com o novo gcc (3.3) , e por motivos
> que desconheço (sou um aprendiz aqui) nao tem funcionamento identico as
> bibliotecas compiladas com o gcc antigo (2.95).
Deixa ver se esclareço isso (tentarei, mas corrijam-me se necessário =D):
Quando você linka um programa com uma biblioteca compartilhada, o acesso
às funções que a biblioteca 'exporta' é feita através dos 'símbolos', que
são representações das funções, variáveis, definições, etc.
Quando o programa é chamado, o ldso - que é o linkador de runtime -
carrega a biblioteca e aponta os ponteiros do programa para as posições
ocupadas pelos símbolos da lib na memória.
Acho que esse processo é executado usando endereços relativos ao início
da área de memória ocupada pela lib na pilha de execução. Quando a
ABI muda, os símbolos podem sofrer alterações de posição ou de forma de
chamada, mas como o programa tem os endereços da versão antiga da ABI vai
acabar apontando pra os lugares errados.
Exemplo:
void do_this (char *str);
Isso é um símbolo exportado por uma lib... vamos supor que o cara mude
essa função para ser:
int do_this (char **str);
Se ele não tiver mudado o soversion da lib, ela vai continuar tendo o
mesmo nome no sistema de arquivos, e os programas vão continuar tentando
acessá-la. Mas quando o programa chamar essa função: BOOM.
Notem que isso também é uma mudança de API, então o programa teria de
ser modificado, além de ser simplesmente compilado. Notem também que
esse exemplo provavelmente super-simplifica o problema.
O que aconteceu nesse caso do gcc é que a libstdc++, que é usada
por todos os programas escritos em C++ quebrou a compatibilidade de
ABI, quebrando a ABI, consequentemente, de todas as libs e programas
escritos em C++. Mas ninguém vai mudar o soversion, porque as libs
continuam com a ABI normal. Resultado: precisamos mudar os nomes dos
pacotes, pra garantir um upgrade sem problemas.
[]s!
--
kov@debian.org: Gustavo Noronha <http://people.debian.org/~kov>
Debian: <http://www.debian.org> * <http://www.debian-br.org>
Dúvidas sobre o Debian? Visite o Rau-Tu: http://rautu.cipsga.org.br
Reply to: