Versões diferentes do libstdc ++ 6 em 12.04

1

Após atualizar o Servidor 10.04 para 12.04, recebi erros relacionados ao lgcc_s ao tentar compilar com g ++ e gcc. Existem várias versões do libgcc_s instaladas em /usr/lib/gcc/x86_64-linux-gnu/ , incluindo 4.6 e 4.8. Se eu criar um link simbólico para o libgcc_s.so no diretório 4.6 para /usr/lib , então no meu caminho, a compilação dá o erro ld: unable to find lgcc_s . Se eu ligar a versão da pasta 4.8, tudo funciona. Verificando a versão de libstdc++6

apt-cache policy libstdc++6
libstdc++6:
  Installed: 4.8.1-2ubuntu1~10.04.1
  Candidate: 4.8.1-2ubuntu1~10.04.1
  Version table:
 *** 4.8.1-2ubuntu1~10.04.1 0
        100 /var/lib/dpkg/status
     4.6.3-1ubuntu5 0
        500 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages

A versão de g++ é 4.6.3 .

Em uma instalação 12.04 limpa, apenas o diretório 4.6 está disponível em /usr/lib/gcc/x86_64-linux-gnu/ . Além disso, a saída de apt-cache policy libstdc++6 é

libstdc++6:
  Installed: 4.6.3-1ubuntu5
  Candidate: 4.6.3-1ubuntu5
  Version table:
 *** 4.6.3-1ubuntu5 0
        500 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
        100 /var/lib/dpkg/status

Por que as versões de libstdc++6 são diferentes após a instalação? Por que a vinculação da biblioteca do diretório 4.8 funciona, mas o diretório 4.6 não? Como posso remover a versão 4.8 de libstdc++6 sem destruir suas dependências (que são praticamente todos os programas do sistema)?

Por fim, a razão principal para fazer essas perguntas é que estou tentando (e falhando) construir vários pacotes de software (Cantera e RDKit) que estão falhando em várias etapas do compilador C ++. Eu quero eliminar o gcc como a fonte do problema, e essa inconsistência se sobressai para mim.

    
por darthbith 15.10.2013 / 22:48

1 resposta

1

Como você pode ver na instalação limpa, a versão 4.8.1-2ubuntu1~10.04.1 do pacote não existe de forma precisa (estou pensando em onde você conseguiu, já que apenas o atrevido tem esse pacote, talvez um PPA). O melhor método é remover o pacote e instalar a partir dos repositórios. Em alguns casos o apt-get irá recusar, então você deve forçá-lo a fazer a sua vontade:

sudo apt-get -f install libstdc++6=4.6.3-1ubuntu5

Eu verificaria outros pacotes que poderiam ter a mesma condição.

    
por Braiam 16.10.2013 / 00:19