Agregue la ruta de la biblioteca al LD_LIBRARY_PATH
variable de entorno
TL;DR
GCC requiere que le digas dónde se encuentra tu biblioteca manualmente cuando no puede encontrar la versión correcta, lo que se puede hacer de varias maneras. Uno es agregarlo al LD_LIBRARY_PATH
.
export LD_LIBRARY_PATH="/usr/local/lib64/:$LD_LIBRARY_PATH"
Para algunos, la ruta de la biblioteca será /usr/local/lib64/
. Otros han informado de la ruta de la biblioteca /usr/lib/x86_64-linux-gnu/
trabajando para ellos en su lugar.
¿Por qué necesitamos agregar la biblioteca a LD_LIBRARY_PATH
? ?
Cuando compila e instala GCC, coloca las bibliotecas en uno de estos directorios, pero eso es todo lo que hace. Según las preguntas frecuentes de libstdc++
, el error que obtuvimos significa que el enlazador dinámico encontró la versión incorrecta del libstdc++
biblioteca compartida. Debido a que el enlazador no puede encontrar la versión correcta, tenemos que decirle dónde encontrar el libstdc++
biblioteca.
La forma más sencilla de solucionar esto es utilizar la variable de entorno LD_LIBRARY_PATH, que es una lista de directorios separados por dos puntos en los que el enlazador buscará bibliotecas compartidas.
También hay otras formas de solucionar este problema. Puede encontrar esta y las otras soluciones mencionadas brevemente cuando instala gcc
si lees la salida make:
Se han instalado bibliotecas en:
/usr/local/lib/../lib32
Si alguna vez desea vincular bibliotecas instaladas en un directorio dado, LIBDIR, debe usar libtool y especificar el nombre de ruta completo de la biblioteca, o usar el indicador '-LLIBDIR' durante el enlace y hacer al menos uno de los siguiente:
- añadir LIBDIR a la variable de entorno `LD_LIBRARY_PATH' durante la ejecución
- añadir LIBDIR a la variable de entorno `LD_RUN_PATH' durante la vinculación
- usar el indicador del enlazador `-Wl,-rpath -Wl,LIBDIR'
- haga que el administrador de su sistema agregue LIBDIR a `/etc/ld.so.conf'
Consulte cualquier documentación del sistema operativo sobre bibliotecas compartidas para obtener más información, como las páginas de manual ld(1) y ld.so(8).
¡Grr, eso fue simple! Además, "si alguna vez desea vincular las bibliotecas instaladas", ¿en serio?
Tuve el mismo problema en mi Ubuntu 14.04 cuando intenté instalar TopTracker. Recibí tales errores:
/usr/share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:versión 'CXXABI_1.3.8' no encontrada (requerida por /usr/share/toptracker/bin/TopTracker)/ usr/share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:versión 'GLIBCXX_3.4.21' no encontrada (requerida por /usr/share/toptracker/bin/TopTracker)/usr /share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:versión 'CXXABI_1.3.9' no encontrada (requerida por /usr/share/toptracker/bin/TopTracker)
Pero luego instalé la versión gcc 4.9 y el problema desapareció:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9