Re: [Guest via RT] [cpan #6094] All tests fail
[email protected] (Jason E. Stewart)
| Newsgroups | gmane.text.xml.xerces-p.devel |
|---|---|
| Message-ID | <[email protected]> |
<[email protected]> writes: > OK, here's an update. I finally got Xerces 2.3.0 to compile > (g++-2.95 was throwing an internal compiler error, but g++-3.0 > managed to do the job). After installing this newly compiled > version of Xerces, I attempted to install XML::Xerces. As before > "perl Makefile.PL" and "make" went without a hitch (the compiler > used by make was the same as I used to compile libxerces, > gcc-3.0/g++-3.0). Yes, I believe you'll need gcc-3 > I get the same undefined-symbol-type error as before, but the details > are different. Before, the "undefined symbol" was > _Q211xercesc_2_316XMLPlatformUtils.fgMemoryManager; now it's > __gxx_personality_v0. > > I have three files in /usr/lib that mention __gxx_personality_v0: > > /usr/lib/libstdc++.so.3.0.4 > /usr/lib/gcc-lib/i386-linux/3.0.4/libstdc++.a > /usr/lib/libstdc++.so.5.0.5 > > ...so I tried re-compiling Xerces (for the 973,526th time), sorry... C++ and perl are not always a happy couple... I've made lots of efforts to make XML-Xerces much more plug-and-play, but as a volunteer, I only get limited time to work on it... > with the > additional linker flag -lstdc++. After installing this new Xerces, > and re-making XML::Xerces, once again, at the "make test" stage I > get: > Can't load '/home/jones/.cpan/build/XML-Xerces-2.3.0-4/blib/arch/auto/XML/Xerces/Xerces.so' for module XML::Xerces: /home/jones/.cpan/build/XML-Xerces-2.3.0-4/blib/arch/auto/XML/Xerces/Xerces.so: undefined symbol: _ZN19PerlCallbackHandler16set_callback_objEP2sv at /opt/lib/perl5/5.8.3/i686-linux/DynaLoader.pm line 229. > > The good news (maybe) is that the "undefined symbol: > __gxx_personality_v0" error message is gone. The bad news is that it > has been replaced by an entirely novel one "undefined symbol: > _ZN19PerlCallbackHandler16set_callback_objEP2sv". Very strange that gcc isn't using the correct libstdc++ automatically... I don't know enough about the gcc c++ compilation stuff to explain this, sorry. Here's what I get for the modules: ~/work/xml-xerces/perl $ nm blib/arch/auto/XML/Xerces/Xerces.so |grep PerlCallbackHandler.*set_callback_obj 00206b64 T _ZN19PerlCallbackHandler16set_callback_objEP2sv 001edf00 T _wrap_PerlCallbackHandler_set_callback_obj ~/work/xml-xerces/perl $ nm -C blib/arch/auto/XML/Xerces/Xerces.so |grep PerlCallbackHandler.*set_callback_obj 00206b64 T PerlCallbackHandler::set_callback_obj(sv*) 001edf00 T _wrap_PerlCallbackHandler_set_callback_obj ~/work/xml-xerces/perl $ nm blib/arch/auto/Handler/Handler.a |grep PerlCallbackHandler.*set_callback_obj 000004f0 T _ZN19PerlCallbackHandler16set_callback_objEP2sv U _ZN19PerlCallbackHandler16set_callback_objEP2sv U _ZN19PerlCallbackHandler16set_callback_objEP2sv ~/work/xml-xerces/perl $ nm -C blib/arch/auto/Handler/Handler.a |grep PerlCallbackHandler.*set_callback_obj 000004f0 T PerlCallbackHandler::set_callback_obj(sv*) U PerlCallbackHandler::set_callback_obj(sv*) U PerlCallbackHandler::set_callback_obj(sv*) See what your modules are producing. One thing you could try is just running one of the samples: perl samples/DOMCount.pl samples/personal.xml and see what happens. 'make test' runs in an environment called Test::Harness that forces a library to load *all* it's symbols at load time (intstead of loading them only when it needs them which is the default). So sometimes make test will give undefined symbol errors that actually don't prevent you from running real programs. I'd like to test this just in case it gives us more ideas. Cheers, jas.