GLIBCXX_3.4.21 no definido en el archivo libstdc++. So.6 con referencia de tiempo de enlace
gcc linker (1)
GCC 5.1 o 5.2 (no lo recuerdo ahora, google) cambió C ++ ABI. Su ubuntu estándar (incluido libstdc ++) se compila con ABI anterior.
Su compilador gcc intenta usar un nuevo ABI. A veces funciona, la mayoría de las veces, no.
Entonces, hay 3 formas de compilar tu código:
1) downgrade gcc
2) agregue -D_GLIBCXX_USE_CXX11_ABI = 0 (ejemplo de cmake) marca (si va por este camino, debe agregar este indicador a cada makefile o proyecto que construya hasta que actualice ubuntu o downgrade gcc)
3) actualizar Ubuntu (lo probé, por cierto 16.04 va con el nuevo ABI y el nuevo gcc por defecto, tuve que ack-grep y eliminar el indicador mencionado anteriormente de todos mis proyectos favoritos)
también: Comprender el _GLIBCXX_USE_CXX11_ABI de GCC 5 o el nuevo ABI
PD cosa _ZNSt7__cxx11
, la respuesta está en la pregunta: _ZNSt7__cxx11
: CXX11 , aunque realmente no leemos los mensajes de error.
Disculpas, entiendo que las preguntas muy similares a esto se han hecho con relativa frecuencia, aunque ninguna de las soluciones parece funcionar para mí. Cuando intento ejecutar cualquier código de C ++ de una complejidad razonable, obtengo el error anterior. El mensaje de error completo es:
/main: relocation error: ./main: symbol _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference
ejecutando otro proyecto, me sale un error muy similar:
./main: relocation error: ./main: symbol _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference
Realmente no tengo ningún problema con la compilación, ya que estos proyectos compilan bien. Esto simplemente sucede cuando intento ejecutar el ejecutable. Pensé que era un error con mi instalación de gcc, así que hoy lo reinstalé, aunque eso no ayudó en absoluto. Realmente no sé qué hacer para solucionar esto, ¿alguien puede ofrecer asistencia?
Este es el Makefile que estoy usando para compilar uno de los proyectos, creo que aquí es donde podría haber el error:
CC= g++
CFLAGS= -Wall -g -std=c++11 -lX11 -lpthread
OBJS = main.o Board_Tile.o Sliding_Solver.o
main: $(OBJS)
$(CC) -o $@ $(OBJS)
%.o : %.cc
$(CC) $(CFLAGS) -c $^
Mi versión de gcc es 5.3.0, estoy ejecutando Ubuntu 14.0.4.