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
dá
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.