/usr/lib/libstdc++.so.6: versão `GLIBCXX_3.4.15 ‘não encontrada

Como posso obter GLIBCXX_3.4.15 no Ubuntu? Não consigo executar alguns programas que estou compilando.

Quando eu faço:

strings /usr/lib/libstdc++.so.6 | grep GLIBC 

Eu recebo:

 GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBCXX_3.4.14 GLIBC_2.2.5 GLIBC_2.3 GLIBC_2.4 GLIBC_2.3.4 GLIBC_2.3.2 GLIBCXX_FORCE_NEW GLIBCXX_DEBUG_MESSAGE_LENGTH 

Obrigado por qualquer ajuda!

    Estou compilando o gcc 4.6 da fonte e, aparentemente,

     sudo make install 

    não pegou este aqui. Eu cavei e encontrei

     gcc/trunk/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.15 

    Eu copiei para / usr / lib e redirecionei libstdc ++. So.6 para apontar para o novo, e agora tudo funciona.

    Eu estava tentando fazer com que o clang funcionasse (o que também requer 6.0.15), e enquanto procurava, eu o encontrei instalado em /usr/local/lib/libstdc++.so.6.0.15 . Ele instalou lá quando eu instalei grafite (uma versão experimental do gcc).

    Se você precisar acessar as bibliotecas nesse local, precisará definir LD_LIBRARY_PATH como:

    export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/local/lib64:/usr/lib64

    Eu consegui fazer com que o clang funcionasse depois de fazer isso. Espero que seja útil para alguém.

    Eu tenho evitado esse problema no passado simplesmente ligando a libstdc ++ estaticamente com esse parâmetro enviado para o g ++ ao vincular meu executável:

     -static-libstdc++ 

    Se vincular a biblioteca estaticamente é uma opção, esta é provavelmente a solução mais rápida.

    Eu me deparo com esse problema ao tentar usar o matlab eng para chamar m funções do código c. que ocorre com o comando mex -f .. ..

    Minha solução:

     strings /usr/lib/i386-/libstdc++.so.6 | grep GLIBC 

    Eu achei que inclui 3.4.15

    então meu sistema tem as mais novas libs.

    o problema vem do próprio matlab, ele chama seu próprio libstdc ++. so.6 from {MATLAB}/bin

    Então, basta substituí-lo com o lib sistema atualizado.

    Por esse erro, eu copiei o último libstdc ++. So.6.0.17 de outro servidor, e removi o link flexível e o recriou.

    1. Copie o libstdc ++. So.6.0.15 ou mais recente de outro servidor para o sistema afetado.
    No meu caso, o SUSE linux 11 SP3 tinha o mais recente.
    2. rm libstdc ++. So.6
    3. ln -s libstdc ++. So.6.0.17 libstdc ++. So.6 (no diretório / usr / lib64).

    nJoy

    gcc versão 4.8.1, o erro parece:

    / root / bllvm / build / Release + Asserts / bin / llvm-tblgen: /usr/lib64/libstdc++.so.6: versão `GLIBCXX_3.4.15 ‘não encontrado (requerido por / root / bllvm / build / Release + Asserts / bin / llvm-tblgen)

    Eu encontrei o libstdc ++. So.6.0.18 no lugar onde eu cumpri gcc 4.8.1

    Então eu gosto disso

     cp ~/objdir/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.18 /usr/lib64/ rm /usr/lib64/libstdc++.so.6 ln -s libstdc++.so.6.0.18 libstdc++.so.6 

    problema resolvido.

    Acabei de enfrentar um problema semelhante ao construir a versão LLVM 3.7. primeiro verifique se você instalou a biblioteca necessária em seu sistema:

     $locate libstdc++.so.6.* 

    Em seguida, adicione o local encontrado à sua variável de ambiente $ LD_LIBRARY_PATH.

    Eu tenho o mesmo erro. Foi assim que funcionou para mim:

    • limpou o projeto no gcc atualmente instalado
    • recompilou

    Trabalhou perfeitamente!

    Eu os extraí de um RPM ( RPM para libstdc ++ ) e depois:

     export LD_LIBRARY_PATH=. 

    Para definir o sistema para procurar as bibliotecas no diretório atual. Então acabou de executar meu programa. Mas no meu caso eu recebi um único executável que eu precisava, não era uma mudança de sistema.

    Às vezes, você não controla a máquina de destino (por exemplo, sua biblioteca precisa ser executada em um sistema corporativo bloqueado). Nesse caso, você precisará recompilar seu código usando a versão do GCC que corresponde à sua versão GLIBCXX. Nesse caso, você pode fazer o seguinte:

    1. Procure a versão mais recente do GLIBCXX suportada pela máquina de destino: strings /usr/lib/libstdc++.so.6 | grep GLIBC strings /usr/lib/libstdc++.so.6 | grep GLIBC … Digamos que a versão é 3.4.19 .
    2. Use https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html para encontrar a versão correspondente do GCC. No nosso caso, isso é [4.8.3, 4.9.0) .

    Eu tive um problema semelhante, e resolvi isso vinculando estaticamente libstdc++ no programa que eu estava compilando, assim:

     $ LIBS=-lstdc++ ./configure ... etc. 

    em vez do habitual

     $ ./configure ... etc. 

    Pode haver problemas com essa solução relacionada ao carregamento de bibliotecas compartilhadas no tempo de execução, mas não examinei o problema com profundidade suficiente para comentar.

    Eu tive o mesmo problema antes, e fixo isso, os passos podem ser encontrados neste erro de fixação “GLIBCXX_3.4.15” no matlab

    Bug with GLIBCXX_3.4.14 Você precisa instalar uma versão mais nova do GCC. http://pkgs.org/download/libstdc++.so.6 goto:

    http://geeksterminal.com/how-to-install-glib-glibc/1392/

    e siga as instruções.

    Eu tive o mesmo problema porque mudei o usuário de mim para outra pessoa:

    su

    Por algum motivo, depois da compilation normal, não consegui executá-la (a mesma mensagem de erro). Diretamente ssh para a outra conta de usuário funciona.

    Eu tinha várias versões do compilador gcc instalado e necessário para usar uma versão mais recente do que a instalação padrão. Como não sou um administrador de sistema para nossos sistemas Linux, não posso simplesmente alterar / usr / lib ou muitas das outras sugestões acima. Eu estava encontrando esse problema e, eventualmente, segui-lo para configurar meu caminho para o diretório de biblioteca de 32 bits em vez do diretório de biblioteca de 64 bits (lib64). Como as bibliotecas no diretório de 32 bits eram incompatíveis, o sistema padronizava a versão mais antiga que estava desatualizada.

    Usando -L para o caminho que eu estava referenciando deu avisos sobre “pular incompatible libstdc ++. Então, ao procurar por -lstdc ++”. Essa foi a dica que me ajudou a resolver o problema.

    Mesma coisa com o gcc versão 4.8.1 (GCC) e libstdc++.so.6.0.18 . Tive que copiá-lo aqui /usr/lib/x86_64-linux-gnu na minha checkbox Ubuntu.

    No meu caso, o LD_LIBRARY_PATH tinha / usr / lib64 primeiro antes de / usr / local / lib64. (Eu estava builing llvm 3.9).
    O novo compilador gcc que eu instalei para compilar o llvm 3.9 tinha bibliotecas usando bibliotecas GLIBCXX mais novas em / usr / local / lib64 Então eu corri o LD_LIBRARY_PATH para o linker para ver / usr / local / lib64 primeiro.
    Isso resolveu esse problema.