x86_64 with usr not link libstdc lib glibcxx_3 found gcc glibc libstdc++

gcc - with - usr lib x86_64 linux gnu libstdc++ so 6



GLIBCXX_3.4.9 no encontrado (3)

El problema es que construiste tu nuevo GCC incorrectamente: en Linux debes usar

./configure --prefix=/usr

El prefijo de instalación predeterminado es /usr/local , por lo make install binarios de make install gcc y g++ deben make install en /usr/local/bin , etc.

Lo que te está sucediendo ahora es que compilas y vinculas usando el nuevo GCC 4.2.4 , pero en el tiempo de ejecución tu programa se une al antiguo /usr/lib64/libstdc++.so.6 (versión 6.0.8, en lugar de ser necesario) 6.0.9). Puede confirmarlo ejecutando ldd build/ALPHA_SE/m5.opt : debería ver que usa /usr/lib64/libstdc++.so.6 .

Hay varias soluciones que podrías hacer.

env LD_LIBRARY_PATH=/usr/local/lib64 ldd build/ALPHA_SE/m5.opt

debería mostrarle que configurar LD_LIBRARY_PATH es suficiente para redirigir el binario a la biblioteca correcta, y

LD_LIBRARY_PATH=/usr/local/lib64 build/ALPHA_SE/m5.opt

debería simplemente correr. Podrías "hornear" esta ruta en m5.opt binario volviéndola a enlazar con -Wl,-rpath=/usr/local/lib64 .

Una solución más permanente es arreglar las bibliotecas de la misma forma en que arregló los binarios:

cd /usr/lib64 && mv libstdc++.so.6 libstdc++.so.6_bak && ln -s /usr/local/lib64/libstdc++.so.6 .

Una solución aún mejor es reconfigurar el nuevo GCC con --prefix=/usr , y luego make all install .

Tengo un problema con respecto a libstdc ++.

Instalé una nueva versión de gcc e intenté compilar el código de C ++. La compilación funcionó, pero cuando trato de ejecutar el binario (m5.opt es su nombre) tengo el siguiente error: build / ALPHA_SE / m5.opt: ​​/usr/lib64/libstdc++.so.6: versión `GLIBCXX_3 .4.9 ''no encontrado (requerido por build / ALPHA_SE / m5.opt).

¿Debo reemplazar libstdc ++, entonces? Y si es así, ¿dónde puedo descargar la versión que quiero? En el sitio web de GCC dicen que libstdc ++ es una parte de gcc ahora.

¡Espero que alguien pueda ayudarme! Ahora solo tengo 4 meses en Linux, así que todo es muy nuevo para mí.

Max

detalles

GCC:
Tenía gcc 4.1.2 antes, pero descargué gcc 4.2.4. Del directorio gcc sin marcar, ejecuté "./configure"; "hacer"; "sudo make install". Cuando traté de usar gcc o g ++ para compilar, su versión predeterminada sigue siendo 4.1.2. Para superar esto, reemplacé algunos enlaces:
mv / usr / bin / gcc / usr / bin / gcc_bak
ls-usr / local / bin / gcc gcc
mv / usr / bin / g ++ / usr / bin / g ++ _ bak
ln-usr / local / bin / g ++ g ++

GLIBC (++) - libstdc ++:
/usr/lib64/libstdc++.so.6 -> libstdc ++. so.6.0.8
/usr/local/lib/libstdc++.so -> libstdc ++. so.6.0.9
/lib/libc.so.6 -> libc-2.5.so -> libc-2.5.so

Versión de Linux:
uname -a gives: Linux madmax 2.6.18-128.4.1.el5 # 1 SMP Martes 4 de agosto 12:51:10 EDT 2009 x86_64 x86_64 x86_64 GNU / Linux


Sé que esta es una pregunta muy antigua, pero ...

No es una buena idea reemplazar el compilador del sistema (es decir, el que está en /usr ) porque todo el sistema se habrá creado con él y dependerá de él.

Por lo general, es mejor instalar el nuevo compilador en una ubicación separada y luego ver las preguntas frecuentes de libstdc ++. ¿Cómo puedo asegurarme de que se encuentre la biblioteca vinculada dinámicamente? y Buscar bibliotecas dinámicas o compartidas en el manual sobre cómo garantizar la libstdc ++ correcta, por lo que se encuentra en el tiempo de ejecución.


Las otras respuestas aquí deberían estar bien, pero la solución ''rápida y fácil'' si tienes instalado gcc en / usr / local / es simplemente agregar las nuevas librerías a LD_LIBRARY_PATH

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

También puede verificar si tiene las versiones correctas de GLIBC instaladas usando

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

Recibí este último consejo de otro foro, por lo que los créditos deben pagarse debido a créditos.