2010-10-27 17 views
8

Recibo un error del enlazador al intentar ejecutar un proyecto de muestra. ¿Podrías decirme cómo puedo solucionar esto?Error del enlazador: referencia no definida a `std :: ctype <char> :: _ M_widen_init()

Gracias de antemano.

 
make[1]: Entering directory `/home/rumi/MobiusProject/Multiproc-Paper/Transformer/ssg' 
/usr/bin/g++ -w -DMOBIUS_LITTLE_ENDIAN -DMOBIUS_LINUX -m32 -o ssgGen_Linux -L../../lib/Linux_lib/ -L/home/rumi/Mobius/mobius/Mobius-2.3/Cpp/lib/Linux_lib -L/home/rumi/Mobius/mobius/Mobius-2.3/Cpp/external/lib/Linux -L../../external/lib/Linux -lgenMain -lgen -lvary_num_compRangeStudy -lmulti_proc_PVPV -lmulti_procRJ -lmemory_moduleSAN -lcpu_moduleSAN -lio_port_moduleSAN -lerrorhandlersSAN -lTRex -lStudy -lPV -lComposer_RepJoin -lSAN -lbase -lstate -lmobutil -ldist -lstdc++ -lcrypto -lpthread -lm 

make[1]: Leaving directory `/home/rumi/MobiusProject/Multiproc-Paper/Transformer/ssg' 
make: Leaving directory `/home/rumi/MobiusProject/Multiproc-Paper/Transformer/ssg' 

/home/rumi/Mobius/mobius/Mobius-2.3/Cpp/lib/Linux_lib/libgenMain.a(Main.o): In function `commandline(int, char**, int&, char*&, char*&)': 
Main.cpp:(.text+0x494): undefined reference to `std::ctype::_M_widen_init() const' 
Main.cpp:(.text+0x4b1): undefined reference to `std::ctype::_M_widen_init() const' 
Main.cpp:(.text+0x584): undefined reference to `std::ctype::_M_widen_init() const' 
/home/rumi/Mobius/mobius/Mobius-2.3/Cpp/lib/Linux_lib/libgenMain.a(Main.o): In function `main': 
Main.cpp:(.text+0x894): undefined reference to `std::ctype::_M_widen_init() const' 
Main.cpp:(.text+0x8b4): undefined reference to `std::ctype::_M_widen_init() const' 
/home/rumi/Mobius/mobius/Mobius-2.3/Cpp/lib/Linux_lib/libStudy.a(BaseStudyClass.o):BaseStudyClass.cpp:(.text+0x5c4): more undefined references to `std::ctype::_M_widen_init() const' follow 
collect2: ld returned 1 exit status 
make[1]: *** [exec3] Error 1 
make: *** [opt] Error 2 

+2

http://mandriva.598463.n5.nabble.com/Bug-49433-gcc4-4-NEW-gcc4-4-misses-std-endl-implementation-at-O2-td669229.html – DumbCoder

+1

Tal vez libgenMain.a fue compilado con una versión diferente de 'g ++'? Es posible que necesite recompilar esa biblioteca y/o asegurarse de que todos sus pasos de compilación usen la misma versión 'g ++'. – aschepler

+0

¿Hay alguna forma de saber qué versión de g ++ se utilizó para compilar una determinada biblioteca? – mfr

Respuesta

8

Parece que es parte de la biblioteca estándar que no se corresponde aquí. Las dos respuestas más probables que puedo pensar:

  • No compiló y vinculó todo el proyecto (incluidas todas las bibliotecas) con la misma versión de g ++.
  • Las rutas de encabezado/biblioteca que está utilizando para la biblioteca estándar no coinciden, y obtendrá los encabezados de una versión de biblioteca pero la biblioteca .so de una versión diferente.
Cuestiones relacionadas