versión `CXXABI_1.3.8' no encontrada (requerida por ...)

Cuando ejecuto mi programa tras una compilación, obtengo el siguiente error:

./prog: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version CXXABI_1.3.8' not found (required by ./prog) ./prog: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: versionGLIBCXX_3.4.19' not found (required by ./prog) ./prog: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /home/arman/lib/boost_1_55_0/stage/lib/libboost_serialization.so.1.55.0)

Tengo tanto boost 1.55.0 como gcc 4.9.0 instalados en ~/lib/boost_1_55_0 y ~/lib/gcc-4.9.0 respectivamente, y supongo que es por esto por lo que estoy teniendo problemas, pero no estoy seguro de cómo solucionarlo.

mi ~/.profile contiene la siguiente línea:

export LD_LIBRARY_PATH=/home/user/lib/boost_1_55_0/stage/lib:$LD_LIBRARY_PATH

Solución

GCC 4.9 introduce una versión de C++ ABI más nueva que la que tiene la libstdc++ de su sistema, así que necesita decirle al cargador que use esta versión más nueva de la librería añadiendo esa ruta a LD_LIBRARY_PATH. Desafortunadamente, no puedo decirte directamente dónde se encuentra la libstdc++ so para tu instalación de GCC 4.9, ya que esto depende de cómo hayas configurado GCC. Así que necesitas algo del estilo de:

export LD_LIBRARY_PATH=/home/user/lib/gcc-4.9.0/lib:/home/user/lib/boost_1_55_0/stage/lib:$LD_LIBRARY_PATH

Tenga en cuenta que la ruta real puede ser diferente (puede haber algún subdirectorio escondido debajo, como `x86_64-unknown-linux-gnu/4.9.0´ o similar).

Comentarios (2)