GLIBCXX_3.4.20 no encontrado, ¿cómo solucionar este error?

104

Whey intento ejecutar el programa Layout Editor (disponible en este sitio ) en Ubuntu 14.04.1 64-bit LTS obtengo el siguiente resultado en el terminal:

$ layout
layout: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by layout)

Probé el comando stringsde la /usr/lib/x86_64-linux-gnu/libstdc++.so.6siguiente manera y aquí está la entrada y la salida:

$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
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
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH

¿Cómo puedo resolver este problema? De alguna manera, supongo que está relacionado, GCCpero no puedo encontrar la manera de solucionar el problema. Además, probé un PPA como se sugiere en ¿Cómo uso el último GCC en Ubuntu? y hay una pregunta similar para una versión anterior de Ubuntu en GLIBCXX_3.4.15 no encontrada . Sin embargo, después de ejecutar, sudo updaterecibí numerosas advertencias y la lista que obtuve con el comando de cadenas no tenía nuevas entradas después de la instalación gcc 4.9, así que eliminé el PPA ( Toolchains Test Builds ) ppa-purge. Cualquier ayuda, sugerencias sobre cómo proceder son muy apreciadas.

Vesnog
fuente
¿Ya encontraste una solución?
Steven Roose
1
@StevenRoose Pude resolver el problema, después de agregar algunos backports e instalar algún software, pero no recuerdo los detalles claramente cuando los recuerdo, los publicaré como respuesta.
Vesnog
Parece que este es un efecto de la vinculación de símbolos: stackoverflow.com/questions/2856438/… Simplemente no está vinculando a una versión de biblioteca lo suficientemente reciente.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Respuestas:

102

Estaba teniendo el mismo problema cuando intentaba ejecutar otro programa y encontré una solución en StackOverflow .

Básicamente, solo realice los siguientes comandos: Primero, instale:

sudo apt-get install libstdc++6

Esto ya debería estar instalado de manera predeterminada, pero pruébelo de todos modos. Si no lo resuelve, solo haga lo siguiente:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test 
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

No ejecuté el comando "dist-upgrade", pero los anteriores lo resolvieron por mí

Paulo
fuente
66
sudo apt-get dist-upgrade resolvió mi problema
ady
2
problema resuelto sin la necesidad de que dist-upgradecomo upgradepropuesta y actualiza mi sistema con la últimalibstdc++
arainone
2
Además, fue necesario agregar 'repositorio' y 'dist-upgrade' por mi parte.
virtualxtc
55
después de la actualización, puede consultar la última versión de GLIBCXX comostrings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
Krishan Kumar Mourya
1
Ubuntu 16.04: en noviembre de 2017, agregando el ppa 'no confiable y no compatible' : ubuntu-toolchain-r / test a través de add- apt-repositoryupdated /usr/lib/x86_64-linux-gnu/libstdc++.so.6hasta e incluyendo GLIBCXX_3.4.24 - y además, estas actualizaciones basicall ALL c / c ++ / fortran herramientas de desarrollo en su máquina
knb
60

Me sucedió con anaconda 4.0.0 (como dijo @mjp), pero la solución para mí fue ejecutar este comando en mi entorno:

conda install libgcc
neok
fuente
66
Esto lo resolvió para mí después de probar muchas soluciones de otros hilos.
Shawn Anderson el
3
También funciona en Ubuntu 16.04
fviktor
1
¡Esto realmente me salvó el trasero un par de veces!
MBZ
Ubuntu 16.04: lo resolvió por mí.
Zhubarb
esto es mucho mejor .. trabajado para mí .. estaba tratando de 'importación root' en Python
MycrofD
11

Tuve este problema, fue porque Anaconda2no tenía la versión GLIBCXX_3.4.20 de lo que sea que sea esa cosa. Solo hasta .19, igual que el tuyo.

Sin embargo, la biblioteca de Ubuntu lo tenía . Así que acabo de crear un enlace suave / acceso directo en la biblioteca Anaconda a la biblioteca Linux real que contiene ese GLIBCXX_3.4.20, reemplazando el anterior, y funcionó bien después de reiniciar la interfaz gráfica de usuario de Python (Spyder).

No debe haber una carpeta llamada libstdc++.so.6en la biblioteca Anaconda, que es aquí: ~/anaconda2/lib. Dentro de esta carpeta están las versiones del script / library-code-thing, excluyendo la que te falta: GLIBCXX_3.4.20

Siga estos pasos para resolver el problema:

  1. vaya a la ubicación correcta y haga una copia de seguridad de su anaconda2acceso directo actual (cambie su nombre para que no se sobrescriba):

    cd ~/anaconda2/lib
    mv -vf libstdc++.so.6 libstdc++.so.6.old
    
  2. cree un nuevo acceso directo usando el lncomando (supongo que estoy en la ubicación anterior ~ / anaconda2 / lib):

    ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ./libstdc++.so.6
    
  3. reinicie spyder / otra interfaz que use

¡Ahora debería funcionar!

mjp
fuente
para mí fue suficiente simplemente cambiar el nombre de la conda .so, luego encontró la versión del sistema operativo sin necesidad de un enlace
Mingwei Samuel
7

Resolví un problema como este (pero GLIBCXX_3.4.21) en CentOS pero no depende del sistema operativo. La biblioteca es parte del compilador gcc, por lo que debe instalar o compilar la versión adecuada de gcc. Esta es una tabla de versiones de gcc y versiones de libstdc ++ apropiado:

GCC 4.9.0: libstdc++.so.6.0.20
GCC 5.1.0: libstdc++.so.6.0.21
GCC 6.1.0: libstdc++.so.6.0.22
GCC 7.1.0: libstdc++.so.6.0.23
GCC 7.2.0: libstdc++.so.6.0.24
GCC 8.0.0: libstdc++.so.6.0.25

(la lista completa de versiones está aquí )

No depende de cómo instalar gcc: puede instalarse desde el paquete o compilarse e instalarse desde las fuentes.

Es posible que las bibliotecas gcc del sistema estén disponibles en lugar de estar recién instaladas. Por lo tanto, debe especificar la variable de entorno donde encontrar bibliotecas, por ejemplo, en la línea de comandos como esta:

$ LD_LIBRARY_PATH=/usr/local/lib64 command args ...
oklas
fuente
He arreglado esta permanentemente actualizando el enlace /usr/lib64/libstdc++.so.6para que apunte a la versión más reciente que tuve en /usr/local/lib64/libstdc++.so.6con este comando: ln -fs /usr/local/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6. La versión anterior permanece sin ningún enlace que lo apunte si necesita revertir. Un poco hack pero funciona.
Mateo
2

Lo he tenido varias veces a lo largo de los años con muchos paquetes diferentes. Siempre ha sido resuelto por:

sudo apt-get dist-upgrade

Si su dist es actualizable, casi siempre derribará una nueva biblioteca C ++ y reconfigurará cosas como que vuelvan a funcionar. El problema casi siempre es causado por su sistema que no apunta a la biblioteca correcta. En mi caso, generalmente causado por señalar una versión de compilación cruzada de una biblioteca.

Bryan Wilcutt
fuente
2

antes_instalar:

# Esta solución es necesaria para evitar errores de libstdc ++ al ejecutar hugo "extendido" con soporte SASS.

  • wget -q -O libstdc++6 http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.10_amd64.deb
  • sudo dpkg --force-all -i libstdc++6

Instalar en pc:

  • wget -q -O hugo.deb https://github.com/gohugoio/hugo/releases/download/v0.46/hugo_extended_0.46_Linux_64bit.deb
  • sudo dpkg -i hugo.deb

Encontré esta solución aquí

Jackson Junior Mkhabela
fuente
1
sudo cp /usr/bin/YourGccVersionLibrary/lib64/libstdc++.so.6 /usr/bin/YourGccVersionLibrary/lib64/libstdc++.so.6.0.20 /usr/lib/x86_64_linux-gnu/
Mati
fuente
55
Bienvenido a Ask Ubuntu! Recomiendo editar esta respuesta para expandirla con detalles específicos sobre lo que se supone que debe lograr este comando. (Consulte también ¿Cómo escribo una buena respuesta? Para obtener consejos generales sobre qué tipo de respuestas se consideran más valiosas en Ask Ubuntu.)
David Foerster
66
¿Por qué cpy no ln -s?
AB