17 octubre 2005

_gxx_personality_v0

En varias ocasiones me han llegado correos de gente que quieren correr algunos de los ejemplos de mi página web y tienen problemas. El problema suele un error del estilo

undefined reference to '_gxx_personality_v0'

El problema no es del ejemplo. No sé muy bien a qué se debe, pero da la impresión de que en algunas versiones de linux han hecho depender el compilador de C (el gcc) de alguna librería propia del de C++ (el g++).

Buscando por internet (_gxx_personality_v0 en google) he visto que hay montones de entradas en los foros referenciando este error.

Las soluciones que se proponen parecen ser:
  • Usar g++ en vez de gcc al compilar, aunque sea un programa de C en vez de C++
  • Añadir a mano el linkado con la libreria /usr/lib/libstdc++.so. Bastaría con añadir una opción -lstdc++ en la línea de compilado con gcc.
Con esto, en teoría estaría resuelto el problema. Parece, de todas formas, que en versiones más modernas de linux se ha corregido el error.

En http://mapserver.gis.umn.edu/data2/wilma/mapserver-users/0303/msg00377.html hay un mensaje de un foro en el que básicamente explica estas dos soluciones.



2 comentarios:

jacanales dijo...

j0j0. Llegue aqui buscando ese error... Gracias por esa ayuda involuntaria y sin animo de lucro.

Guardo tu blog en favoritos, parece interesante :)

Bikila dijo...

A mi me dio el mismo problema y era porque me faltaban cosas por implementar. Tenía una clase con un método (virtual aunque seguro que ocurre lo mismo con uno que no lo sea) que no habia implementado, solo declarado:

class punto{
public:
virtual dibujar;
}

lo cambie a esto (porque me interesaba que fuese asi):

class punto{
public:
virtual dibujar=0;
}

y ya no tuve problemas de compilacion