/usr/local/lib/libid3.so: undefined reference

2006-12-02
2013-05-20
  • While compiling ripperX on a slackware-current machine with id3lib-3.8.3 installed, I get a long list of libid3.so undefined reference errors.  Here's a short sample:

    /usr/local/lib/libid3.so: undefined reference to `std::basic_ostream<char, std::char_traits<char> >::seekp(std::fpos<__mbstate_t>)'
    /usr/local/lib/libid3.so: undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, unsigned int)'
    /usr/local/lib/libid3.so: undefined reference to `std::ios_base::Init::~Init()'
    /usr/local/lib/libid3.so: undefined reference to `vtable for std::basic_streambuf<char, std::char_traits<char> >'
    /usr/local/lib/libid3.so: undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, unsigned int, std::allocator<char> const&)'
    /usr/local/lib/libid3.so: undefined reference to `std::ios_base::~ios_base()'
    /usr/local/lib/libid3.so: undefined reference to `__cxa_begin_catch'
    /usr/local/lib/libid3.so: undefined reference to `std::basic_ostream<char, std::char_traits<char> >::seekp(long long, std::_Ios_Seekdir)'
    /usr/local/lib/libid3.so: undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::reserve(unsigned int)'
    /usr/local/lib/libid3.so: undefined reference to `std::__basic_file<char>::is_open() const'

    Any idea why I'm getting these?  ripperX 2.6.7 compiles just fine, and once I figured out the CDDB thing, it ripped a CD as I would expect it to.  But if 2.7.0 has extra goodness, I'd like to experience it.

    Cheers,
    hussar

     
    • tony mancill
      tony mancill
      2006-12-10

      This is most likely due to the ID3v2 patches that were added to the 2.7.0
      release.  I will be looking at this issue this week.

      Thanks for your patience.
      Cheers,
      tony

       
    • tony mancill
      tony mancill
      2006-12-10

      Okay, I have an update on this.  Part of the patch that was incorporated into 2.7.0 included a file named id3.h, which I suspect was masking the "real" id3.h.

      I've checked in a new version to SVN that gets rid of the local id3* files.  Could you give it try and let me know if it's working better on slackware?

       
    • Stranger
      Stranger
      2007-11-18

      Recycled from the same error in the help thread:

      I've had this problem before and up until now have been unable to figure it out. I started having the same errors that you describe and after much searching and a bit of testing it seems that the compiler is missing a few flags when it tries to create the binaries. That leaves you with two options; either way start by extracting the source.

      Option one is to add "-lstdc++ -lz" at the end of line 14 in src/Makefile.in ("LDFLAGS = @LDFLAGS@ @LIBS@ -lutil -lid3"), then proceed as normal (configure, make, make install). 

      Option two is to run configure as normal then add "-lstdc++ -lz" at the end of line 14 in src/Makefile ("LDFLAGS = <bunch of flags>"). 

      Either way will add the two flags to the make binary step and should solve the problem. It worked for me on a fresh install of Slackware 12 (after installing id3lib).