in reply to XML::LibXML::Common 0.13 on linux - undefined symbol

Probably the symbol xmlFree is not defined in the Common.so library and is needed by the linking. try
nm blib/arch/auto/XML/LibXML/Common/Common.so|grep 'xmlFree'
and see if the symbol name comes up with that name or a bit altered;I have seen cases that the symbol name looked up contained an underscore;ie. the function name that was called by the programm was iiseterr and inside the library it was iiseterr_.The underscore did the damage and the symbol could not be found.This was resolved by editing the program and adding an underscore

Replies are listed 'Best First'.
Re^2: XML::LibXML::Common 0.13 on linux - undefined symbol
by joec_ (Scribe) on May 12, 2009 at 16:52 UTC
    Hi

    This is the output of that command:
        U xmlFree

    What does this mean?

    Thanks

    -----

    Eschew obfuscation, espouse elucidation!

      It means that the library (Common.so) is using that symbol, but the symbol is undeclared ("U") within the library itself, i.e. it's an external reference that needs to be satisfied by some other library.

      The symbol is most likely expected to be defined in the shared library libxml2.so that Common.so is presumably linked against — that library contains the actual implementation of most of the functionality; Common.so is just the Perl/C wrapping code...  In other words, you could try to run "nm -D" on libxml2 to see if the symbol is defined there  (check the build output for where the lib was found). The symbol should not be listed as "U" there, but rather as something like "T" ("text" section, aka code), or "D" ("data" section).

      Update: just checked on my box with v2.6.32 and an older box with v2.6.31, and the symbol is defined (in both cases):

      $ nm -D /usr/lib/libxml2.so.2.6.32 | grep xmlFree\$ 000000000035a6c0 D xmlFree
        Ok...

        How would i go about fixing it then? ... i'm new to all of this...

        Thanks

        -----

        Eschew obfuscation, espouse elucidation!