x86_64 usr not libstdc lib64 lib glibcxx_3 found c++ linux

not - Cómo corregir:/usr/lib/libstdc++.so.6: versión `GLIBCXX_3.4.15 ''no encontrado



usr lib x86_64 linux gnu libstdc++ so 6 (7)

Así que ahora estoy desesperado por encontrar una solución para esto. Estoy compilando una biblioteca compartida .so en Ubuntu 32 bit (He intentado hacerlo en Debian y Ubuntu 64 bit, pero ninguno funcionó tampoco)

Sigo recibiendo: /usr/lib/libstdc++.so.6: version ``GLIBCXX_3.4.15'' not found cada vez que intento cargar mi complemento.

Así es como estoy obteniendo este error:

  1. Instalar el último Ubuntu 32 bit
  2. sudo apt-get install build-essential
  3. Compila y carga mi complemento (.so)

Aquí hay algunos enlaces que encontré y probé, pero ninguno funcionó para mí:

(Mi vieja pregunta: de alguna manera la solucioné unos días después de publicar esta pregunta, pero no recuerdo cómo exactamente lo hice)

Mi pregunta

Otro usuario con el mismo problema

Y otro

Veo que algunas personas lo arreglaron moviendo libstdc ++ (creo) a algún directorio y luego señalando o vinculando idk a ese directorio, pero eso me dejó perplejo.

Alguien sabe una solución?

(Editar :) - Running: strings /usr/lib/libstdc++.so.6 | grep GLIBC strings /usr/lib/libstdc++.so.6 | grep GLIBC en el terminal me da: strings ''/usr/lib/libstdc++.so.6'': No such file strings /usr/lib/libstdc++.so.6 | grep GLIBC strings ''/usr/lib/libstdc++.so.6'': No such file . ¿Podría ser el problema? Y si es así, ¿cómo instalo esta biblioteca?

(Edit2 :) ¿Alguien más sabe de una solución?

(Edit3) Todavía necesita una solución. ¿Hay alguna manera de ver en qué distribución se compiló una biblioteca compartida? Sé que una vez compilé esta misma biblioteca hace un tiempo, ¡pero no recuerdo!

(Edit4) ldd my_lib_.so me da:

linux-gate.so.1 => (0xb77d7000) libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb76c1000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb76a4000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb74fa000) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb74ce000) /lib/ld-linux.so.2 (0xb77d8000)

ldd program_im_loading_so_into me da:

linux-gate.so.1 => (0xb77d8000) libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb77c0000) libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb77a5000) libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb76bb000) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb768f000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb7672000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb74c9000) /lib/ld-linux.so.2 (0xb77d9000)

ejecutar strings /usr/lib/i386-linux-gnu/libstdc++.so.6 | grep GLIBCXX strings /usr/lib/i386-linux-gnu/libstdc++.so.6 | grep GLIBCXX me da:

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

y finalmente aquí está mi versión de gcc:

`gcc version 4.6.4 (Ubuntu/Linaro 4.6.4-1ubuntu1~12.04)`


Arriba, mencionas haber compilado tu como parte de los pasos para reproducirte, pero a continuación, hiciste una edición diciendo:

"¿hay alguna manera de ver en qué distribución se compiló una biblioteca compartida?"

Si compiló esto en la misma distribución o no, e incluso una versión diferente de la misma distribución es un detalle importante, especialmente para las aplicaciones de C ++.

Vincularme a bibliotecas de C ++, incluido libstdc ++, puede tener resultados mixtos, hasta donde sé. Aquí hay una pregunta relacionada sobre recompilar con diferentes versiones de c ++.

¿Necesitamos recompilar bibliotecas con c ++ 11?

Básicamente, si compiló contra c ++ en una distribución diferente (y posiblemente una versión diferente de gcc), esto puede estar causando su problema.

Creo que tienes dos opciones:

  1. Su mejor apuesta: vuelva a compilar su .so si no lo compiló en su sistema actual. Si hay un problema con el entorno del sistema de su tiempo de ejecución, incluso podría salir en la compilación.
  2. Agrupe las librerías de c ++ de su otro compilador junto con su aplicación. Esto solo puede ser viable si es la misma distribución ... Pero es un truco útil si has creado tu propio compilador. También deberá establecer y exportar LD_LIBRARY_PATH a la ruta que contiene las bibliotecas compuestas de stdc ++ si va por esa ruta.

Enlace estático a libstdc ++ con la opción -static-libstdc++ gcc.


Esto funcionó para mí:

cp <path_to>/libstdc++.so.6 $PWD ./<executable>

Este tidbit vino de @kerin (comentario proporcionado anteriormente):

puede consultar .com/questions/13636513/…

Desde ese enlace:

Si coloca la libstdc ++ más reciente, entonces en el mismo directorio que el ejecutable se encontrará en tiempo de ejecución, problema resuelto.

El error que me estaba mencionando es que libstdc ++. So.6 venía de / usr / lib64 /, ¡pero esta no es la biblioteca a la que vinculo! El mensaje se veía así:

<executing_binary>: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21'' not found (required by <executing_binary>)

Verifiqué que LD_LIBRARY_PATH tenía el directorio (y que era la primera ruta). Por alguna razón, en el tiempo de ejecución todavía estaba mirando /usr/lib64/libstdc++.so.6.

Tomé el consejo del artículo anterior y copié el libstdc ++. So.6 desde donde me vinculé al directorio con mi ejecutable, ejecuté desde allí y ¡funcionó!


Si alguien tiene el mismo problema que yo, asegúrese de no instalar desde el repositorio Ubuntu 14.04 en una máquina 12.04, le da el mismo error. Reinstalar desde el repositorio adecuado solucionó el problema.


Simplemente instale la última versión del repositorio no predeterminado:

$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test $ sudo apt-get update $ sudo apt-get install libstdc++6-4.7-dev


Solucioné este problema instalando: sudo apt-get install libstdc++6

En mi caso, me encontré con este problema después de instalar MongoDB 3.0.1

mongo: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: versión `GLIBCXX_3.4.18 ''no encontrada (requerida por mongo)


este problema se puede resolver instalando la última libstdc ++.

$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test $ sudo apt-get update $ sudo apt-get install libstdc++6-7-dbg