Version: (using KDE KDE 3.2.1) Installed from: Debian testing/unstable Packages Compiler: gcc 3.3 (Debian Sid Version) OS: Linux if I compile juk of the kdemultimedia package, it hangs with the following error: make[3]: Entering directory `/usr/src/kde/kdemultimedia-3.2.1/juk' /bin/sh ../libtool --silent --mode=link --tag=CXX g++ -Wnon-virtual-d tor -Wno-long-long -Wundef -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wc ast-align -Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -Wwr ite-strings -O2 -Wformat-security -Wmissing-format-attribute -fno-exce ptions -fno-check-new -fno-common -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_C AST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION -o juk -L/usr/X1 1R6/lib -L/usr/local/qt/lib -L/usr/local/kde/lib -R /usr/local/kde/li b -R /usr/local/qt/lib -R /usr/X11R6/lib gstreamerplayer.o artsplayer. o directorylist.o stringhash.o sortedstringlist.o systemtray.o splashs creen.o statuslabel.o collectionlist.o playlistitem.o playlist.o playl istsplitter.o playlistbox.o tageditor.o cache.o player.o tag.o customa ction.o slideraction.o keydialog.o juk.o main.o tagguesser.o tagguesse rconfigdlg.o playlistsearch.o searchwidget.o filerenamer.o dynamicplay list.o searchplaylist.o musicbrainzquery.o mediafiles.o viewmode.o adv ancedsearchdialog.o historyplaylist.o musicbrainzitem.o trackpickerdia log.o filerenamerconfigdlg.o stringshare.o jukIface_skel.o directoryli stbase.o tagguesserconfigdlgwidget.o trackpickerdialogbase.o filerenam erconfigdlgwidget.o -lmusicbrainz -lartskde -lkio -L/usr/lib -ltag -l xine playlist.o(.text+0x7327): In function `Playlist::slotRenameTag()': : undefined reference to `TagLib::ID3v1::genreList()' playlist.o(.text+0x7366): In function `Playlist::slotRenameTag()': : undefined reference to `TagLib::String::toCString(bool) const' playlist.o(.text+0x741a): In function `Playlist::slotRenameTag()': : undefined reference to `TagLib::StringList::~StringList [in-charge]()' playlist.o(.gnu.linkonce.t._ZNSt4listIN6TagLib6StringESaIS1_EE6insertESt14_List_iteratorIS1_RS1_PS1_ERKS1_+0x28): In function `std::list<TagLib::String, std::allocator<TagLib::String> >::insert(std::_List_iterator<TagLib::String, TagLib::String&, TagLib::String*>, TagLib::String const&)': : undefined reference to `TagLib::String::String[in-charge](TagLib::String const&)' tageditor.o(.text+0x16fd): In function `TagEditor::readConfig()': : undefined reference to `TagLib::ID3v1::genreList()' tageditor.o(.text+0x1746): In function `TagEditor::readConfig()': : undefined reference to `TagLib::String::toCString(bool) const' tageditor.o(.text+0x1852): In function `TagEditor::readConfig()': : undefined reference to `TagLib::StringList::~StringList [in-charge]()' tag.o(.text+0x48): In function `Tag::createTag(QString const&, bool)': : undefined reference to `TagLib::MPEG::File::File[in-charge](char const*, bool, TagLib::AudioProperties::ReadStyle)' tag.o(.text+0x58): In function `Tag::createTag(QString const&, bool)': : undefined reference to `TagLib::File::isValid() const' tag.o(.text+0x7f): In function `Tag::createTag(QString const&, bool)': : undefined reference to `TagLib::MPEG::File::~File [in-charge]()' tag.o(.text+0x95): In function `Tag::createTag(QString const&, bool)': : undefined reference to `TagLib::MPEG::File::~File [in-charge]()' tag.o(.text+0xcf): In function `Tag::createTag(QString const&, bool)': : undefined reference to `TagLib::Vorbis::File::File[in-charge](char const*, bool, TagLib::AudioProperties::ReadStyle)' tag.o(.text+0xdf): In function `Tag::createTag(QString const&, bool)': : undefined reference to `TagLib::File::isValid() const' tag.o(.text+0x106): In function `Tag::createTag(QString const&, bool)': : undefined reference to `TagLib::Vorbis::File::~File [in-charge]()' tag.o(.text+0x114): In function `Tag::createTag(QString const&, bool)': : undefined reference to `TagLib::Vorbis::File::~File [in-charge]()' tag.o(.text+0x14f): In function `Tag::createTag(QString const&, bool)': : undefined reference to `TagLib::FLAC::File::File[in-charge](char const*, bool, TagLib::AudioProperties::ReadStyle)' tag.o(.text+0x15f): In function `Tag::createTag(QString const&, bool)': : undefined reference to `TagLib::File::isOpen() const' tag.o(.text+0x186): In function `Tag::createTag(QString const&, bool)': : undefined reference to `TagLib::FLAC::File::~File [in-charge]()' tag.o(.text+0x194): In function `Tag::createTag(QString const&, bool)': : undefined reference to `TagLib::FLAC::File::~File [in-charge]()' tag.o(.text+0x5e0): In function `Tag::save()': : undefined reference to `TagLib::ID3v2::FrameFactory::instance()' tag.o(.text+0x5e8): In function `Tag::save()': : undefined reference to `TagLib::ID3v2::FrameFactory::setDefaultTextEncoding(TagLib::String::Type)' tag.o(.text+0x64f): In function `Tag::save()': : undefined reference to `TagLib::MPEG::File::File[in-charge](char const*, bool, TagLib::AudioProperties::ReadStyle)' tag.o(.text+0x678): In function `Tag::save()': : undefined reference to `TagLib::File::isValid() const' tag.o(.text+0x7ae): In function `Tag::save()': : undefined reference to `TagLib::String::String[in-charge](char const*, TagLib::String::Type)' tag.o(.text+0x7cd): In function `Tag::save()': : undefined reference to `TagLib::String::~String [in-charge]()' tag.o(.text+0x7f4): In function `Tag::save()': : undefined reference to `TagLib::String::String[in-charge](char const*, TagLib::String::Type)' tag.o(.text+0x813): In function `Tag::save()': : undefined reference to `TagLib::String::~String [in-charge]()' tag.o(.text+0x83a): In function `Tag::save()': : undefined reference to `TagLib::String::String[in-charge](char const*, TagLib::String::Type)' tag.o(.text+0x859): In function `Tag::save()': : undefined reference to `TagLib::String::~String [in-charge]()' tag.o(.text+0x880): In function `Tag::save()': : undefined reference to `TagLib::String::String[in-charge](char const*, TagLib::String::Type)' tag.o(.text+0x89f): In function `Tag::save()': : undefined reference to `TagLib::String::~String [in-charge]()' tag.o(.text+0x8c6): In function `Tag::save()': : undefined reference to `TagLib::String::String[in-charge](char const*, TagLib::String::Type)' tag.o(.text+0x8e5): In function `Tag::save()': : undefined reference to `TagLib::String::~String [in-charge]()' tag.o(.text+0x973): In function `Tag::save()': : undefined reference to `TagLib::Vorbis::File::File[in-charge](char const*, bool, TagLib::AudioProperties::ReadStyle)' tag.o(.text+0x9b7): In function `Tag::save()': : undefined reference to `TagLib::FLAC::File::File[in-charge](char const*, bool, TagLib::AudioProperties::ReadStyle)' tag.o(.text+0x1189): In function `Tag::Tag[not-in-charge](QString const&, TagLib::File*)': : undefined reference to `TagLib::String::toCString(bool) const' tag.o(.text+0x1201): In function `Tag::Tag[not-in-charge](QString const&, TagLib::File*)': : undefined reference to `TagLib::String::~String [in-charge]()' tag.o(.text+0x1223): In function `Tag::Tag[not-in-charge](QString const&, TagLib::File*)': : undefined reference to `TagLib::String::toCString(bool) const' tag.o(.text+0x1299): In function `Tag::Tag[not-in-charge](QString const&, TagLib::File*)': : undefined reference to `TagLib::String::~String [in-charge]()' tag.o(.text+0x12bb): In function `Tag::Tag[not-in-charge](QString const&, TagLib::File*)': : undefined reference to `TagLib::String::toCString(bool) const' tag.o(.text+0x1331): In function `Tag::Tag[not-in-charge](QString const&, TagLib::File*)': : undefined reference to `TagLib::String::~String [in-charge]()' tag.o(.text+0x1353): In function `Tag::Tag[not-in-charge](QString const&, TagLib::File*)': : undefined reference to `TagLib::String::toCString(bool) const' tag.o(.text+0x13c9): In function `Tag::Tag[not-in-charge](QString const&, TagLib::File*)': : undefined reference to `TagLib::String::~String [in-charge]()' tag.o(.text+0x13eb): In function `Tag::Tag[not-in-charge](QString const&, TagLib::File*)': : undefined reference to `TagLib::String::toCString(bool) const' tag.o(.text+0x1461): In function `Tag::Tag[not-in-charge](QString const&, TagLib::File*)': : undefined reference to `TagLib::String::~String [in-charge]()' tag.o(.text+0x1779): In function `Tag::Tag[in-charge](QString const&, TagLib::File*)': : undefined reference to `TagLib::String::toCString(bool) const' tag.o(.text+0x17f1): In function `Tag::Tag[in-charge](QString const&, TagLib::File*)': : undefined reference to `TagLib::String::~String [in-charge]()' tag.o(.text+0x1813): In function `Tag::Tag[in-charge](QString const&, TagLib::File*)': : undefined reference to `TagLib::String::toCString(bool) const' tag.o(.text+0x1889): In function `Tag::Tag[in-charge](QString const&, TagLib::File*)': : undefined reference to `TagLib::String::~String [in-charge]()' tag.o(.text+0x18ab): In function `Tag::Tag[in-charge](QString const&, TagLib::File*)': : undefined reference to `TagLib::String::toCString(bool) const' tag.o(.text+0x1921): In function `Tag::Tag[in-charge](QString const&, TagLib::File*)': : undefined reference to `TagLib::String::~String [in-charge]()' tag.o(.text+0x1943): In function `Tag::Tag[in-charge](QString const&, TagLib::File*)': : undefined reference to `TagLib::String::toCString(bool) const' tag.o(.text+0x19b9): In function `Tag::Tag[in-charge](QString const&, TagLib::File*)': : undefined reference to `TagLib::String::~String [in-charge]()' tag.o(.text+0x19db): In function `Tag::Tag[in-charge](QString const&, TagLib::File*)': : undefined reference to `TagLib::String::toCString(bool) const' tag.o(.text+0x1a51): In function `Tag::Tag[in-charge](QString const&, TagLib::File*)': : undefined reference to `TagLib::String::~String [in-charge]()' musicbrainzquery.o(.text+0x1d): In function `MusicBrainzQuery::MusicBrainzQuery[not-in-charge](MusicBrainzQuery::QueryType, QStringList const&, QObject*, char const*)': : undefined reference to `MusicBrainz::MusicBrainz[not-in-charge]()' musicbrainzquery.o(.text+0x85): In function `MusicBrainzQuery::MusicBrainzQuery[in-charge](MusicBrainzQuery::QueryType, QStringList const&, QObject*, char const*)': : undefined reference to `MusicBrainz::MusicBrainz[not-in-charge]()' musicbrainzquery.o(.text+0x3d7): In function `MusicBrainzQuery::slotQuery()': : undefined reference to `MusicBrainz::SetDepth(int)' musicbrainzquery.o(.text+0x4e7): In function `MusicBrainzQuery::slotQuery()': : undefined reference to `MusicBrainz::Query(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*)' musicbrainzquery.o(.text+0x504): In function `MusicBrainzQuery::slotQuery()': : undefined reference to `MusicBrainz::DataInt(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' musicbrainzquery.o(.text+0x6b2): In function `MusicBrainzQuery::slotQuery()': : undefined reference to `MusicBrainz::Select(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' musicbrainzquery.o(.text+0x9b3): In function `MusicBrainzQuery::slotQuery()': : undefined reference to `MusicBrainz::GetQueryError(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)' musicbrainzquery.o(.text+0xbe8): In function `MusicBrainzQuery::dataExtract(QString const&, int)': : undefined reference to `MusicBrainz::Data(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' musicbrainzquery.o(.text+0x104e): In function `MusicBrainzQuery::extractAlbum()': : undefined reference to `MusicBrainz::Data(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' musicbrainzquery.o(.text+0x105c): In function `MusicBrainzQuery::extractAlbum()': : undefined reference to `MusicBrainz::GetIDFromURL(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)' musicbrainzquery.o(.text+0x1135): In function `MusicBrainzQuery::extractAlbum()': : undefined reference to `MusicBrainz::DataInt(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' musicbrainzquery.o(.text+0x11f5): In function `MusicBrainzQuery::extractAlbum()': : undefined reference to `MusicBrainz::Data(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' musicbrainzquery.o(.text+0x1203): In function `MusicBrainzQuery::extractAlbum()': : undefined reference to `MusicBrainz::GetIDFromURL(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)' musicbrainzquery.o(.text+0x18b7): In function `MusicBrainzQuery::extractTrackFromAlbum(int)': : undefined reference to `MusicBrainz::Data(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' musicbrainzquery.o(.text+0x18c5): In function `MusicBrainzQuery::extractTrackFromAlbum(int)': : undefined reference to `MusicBrainz::GetIDFromURL(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)' musicbrainzquery.o(.text+0x197e): In function `MusicBrainzQuery::extractTrackFromAlbum(int)': : undefined reference to `MusicBrainz::Data(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' musicbrainzquery.o(.text+0x198c): In function `MusicBrainzQuery::extractTrackFromAlbum(int)': : undefined reference to `MusicBrainz::GetIDFromURL(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)' musicbrainzquery.o(.text+0x1bc1): In function `MusicBrainzQuery::extractTrack(int)': : undefined reference to `MusicBrainz::Data(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' musicbrainzquery.o(.text+0x1d6b): In function `MusicBrainzQuery::extractTrack(int)': : undefined reference to `MusicBrainz::GetIDFromURL(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)' musicbrainzquery.o(.text+0x1e0a): In function `MusicBrainzQuery::extractTrack(int)': : undefined reference to `MusicBrainz::Select(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' musicbrainzquery.o(.text+0x1ec6): In function `MusicBrainzQuery::extractTrack(int)': : undefined reference to `MusicBrainz::GetOrdinalFromList(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' musicbrainzquery.o(.text+0x1f10): In function `MusicBrainzQuery::extractTrack(int)': : undefined reference to `MusicBrainz::Data(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' musicbrainzquery.o(.text+0x1f1e): In function `MusicBrainzQuery::extractTrack(int)': : undefined reference to `MusicBrainz::GetIDFromURL(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)' musicbrainzquery.o(.text+0x1fd8): In function `MusicBrainzQuery::extractTrack(int)': : undefined reference to `MusicBrainz::Select(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' musicbrainzquery.o(.gnu.linkonce.t._ZN16MusicBrainzQueryD1Ev+0x4c): In function `MusicBrainzQuery::~MusicBrainzQuery [in-charge]()': : undefined reference to `MusicBrainz::~MusicBrainz [not-in-charge]()' musicbrainzquery.o(.gnu.linkonce.t._ZN16MusicBrainzQueryD0Ev+0x4c): In function `MusicBrainzQuery::~MusicBrainzQuery [in-charge deleting]()': : undefined reference to `MusicBrainz::~MusicBrainz [not-in-charge]()' musicbrainzquery.o(.gnu.linkonce.r._ZTI16MusicBrainzQuery+0x18): undefined reference to `typeinfo for MusicBrainz' collect2: ld returned 1 exit status make[3]: *** [juk] Error 1 make[3]: Leaving directory `/usr/src/kde/kdemultimedia-3.2.1/juk' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/usr/src/kde/kdemultimedia-3.2.1/juk' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/usr/src/kde/kdemultimedia-3.2.1' make: *** [all] Error 2 configure works fine without any missing package.
Well, this is probably something broken in the toolchain (gcc, ld, or such). It's apparently finding the appropriate libraries and their headers but for some reason isn't linking them in.
This is a problem with the Debian packages. I'm not sure what they contain, but a valid shared library isn't among them. ;-) (I worked through this issue with another developer trying to use TagLib on Debain.) You'll probably notice that "nm -C /usr/lib/libtag.so" doesn't contain anything. For him building TagLib by hand fixed things. You should report this to the Debian package maintainer.