taglib problem
#1
I'm no expert at building things, but i have built xbmc from source before and succeeded. Read the docs and compiled the 1.8 version och taglib for Ubuntu.

But this time i am missing something. It seems when i build XBMC it doesn't link against the 1.8 version, it uses the 1.7 version that comes with Ubuntu 12.04.

ldd xbmc.bin gives me:
libtag.so.1 => /usr/lib/x86_64-linux-gnu/libtag.so.1 (0x00007f79a76cc000)

and that is wrong since i get this error when i try to run xbmc:
symbol lookup error: /usr/lib/xbmc/xbmc.bin: undefined symbol: _ZTIN6TagLib8IOStreamE

What am i missing and how do i get XBMC to link to the proper version of taglib?

I changed the taglib Makefile to install into /usr/lib since i use --prefix=/usr when configuring XBMC.
Reply
#2
See http://forum.xbmc.org/showthread.php?tid=140613
Image
AWXi - Ajax web interface. Wiki
Reply
#3
Yes, i've seen that thread. Taglib 1.8 is installed but xbmc dont use that or link against that lib. I'm afraid to remove the 1.7 version because other programs may use that. Shouldn't it be possible to have two versions, but how do i get xbmc to link against the right one?

Or is it necessary to only have one taglib version installed?
And why is xbmc linking against a lib in /usr/lib/x86_64-linux-gnu and not in /usr/lib? I must be doing something wrong.
Reply
#4
Are you building TagLib before you build XBMC(./configure)?
Code:
make -C lib/taglib
sudo make -C lib/taglib install
Reply
#5
Hmm, maybe i didn't do it before configure, only before make. Will clean up and try again.
Reply
#6
Unfortunately that didn't help, still linking against:

ldd xbmc.bin | grep libtag
libtag.so.1 => /usr/lib/x86_64-linux-gnu/libtag.so.1 (0x00007fd2c8798000)

and that is:

ls -al /usr/lib/x86_64-linux-gnu/libtag*
lrwxrwxrwx 1 root root 11 Dec 18 2011 /usr/lib/x86_64-linux-gnu/libtag.so -> libtag.so.1
lrwxrwxrwx 1 root root 15 Aug 26 12:36 /usr/lib/x86_64-linux-gnu/libtag.so.1 -> libtag.so.1.7.0
-rw-r--r-- 1 root root 1063856 Dec 18 2011 /usr/lib/x86_64-linux-gnu/libtag.so.1.7.0

wrong version. What decides what file to link against? The only files that seems to be created when i install taglib 1.8 is:
ls -al /usr/lib/libtag*
-rw-r--r-- 1 root root 5513332 Oct 21 17:55 /usr/lib/libtag.a
-rw-r--r-- 1 root root 58108 Oct 21 17:55 /usr/lib/libtag_c.a

That is the only files that seems to be related to taglib and that get new dates when i install. I could create new symbolic links but to what files?

Reply
#7
find /usr -name libtag*
Reply
#8
find /usr -name libtag*
/usr/share/lintian/overrides/libtag1-dev
/usr/share/lintian/overrides/libtag1-vanilla
/usr/share/doc/libtag1-dev
/usr/share/doc/libtag1-vanilla
/usr/share/doc/libtag1c2a
/usr/lib/libtag.so.1.12.0
/usr/lib/libtag.a
/usr/lib/libtag.so
/usr/lib/x86_64-linux-gnu/libtag.so
/usr/lib/x86_64-linux-gnu/libtag.so.1.7.0
/usr/lib/x86_64-linux-gnu/libtag.so.1
/usr/lib/vlc/plugins/meta_engine/libtaglib_plugin.so
/usr/lib/libtag.so.1
/usr/lib/libtag_c.so
/usr/lib/libtag_c.so.0.0.0
/usr/lib/libtag_c.a
/usr/lib/libtag_c.so.0
Reply
#9
looks like you need to build libtag as x86_64
Reply
#10
How can i change the Makefile for taglib to do that? Looking at it now and don't see a obvious way.
Reply
#11
IF you change a Makefile you better friggan know what you are doing... if you install taglib into /usr, the 1.8 won't be able to override the system 1.7 one, and you will end up with linking to the 1.7 one when -ltag is performed because /usr/lib is first in the lib path. i did not set it up to install to /usr/local for fun.
Reply
#12
Well i'm doing this to learn and now i've learned something. Thank you.
Reply
#13
I guess i didn't learn anything =( Restored my change in the makefile so the lib now installs to /usr/local

ls -al /usr/local/lib/libtag*
-rw-r--r-- 1 root root 5513332 Oct 22 14:59 /usr/local/lib/libtag.a
-rw-r--r-- 1 root root 58108 Oct 22 14:59 /usr/local/lib/libtag_c.a

But xbmc.bin still links to the system 1.7 version
ldd xbmc.bin | grep libtag
libtag.so.1 => /usr/lib/x86_64-linux-gnu/libtag.so.1 (0x00007fa097e77000)

Or is because i used --prefix=/usr when building xbmc? Is that also forbidden and destroy things?
Reply
#14
no, that won't be an issue. show me the linker line for xbmc.bin (make V=1)
Reply
#15
/usr/bin/ccache g++ -O2 -fPIC -DPIC -D_REENTRANT -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -g -D_DEBUG -Wall -O2 -fPIC -DPIC -D_REENTRANT -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -g -D_DEBUG -Wall -o xbmc.bin -Wl,--whole-archive xbmc/linux/linux.a xbmc/network/network.a xbmc/video/windows/videowindows.a xbmc/utils/utils.a xbmc/cores/DllLoader/exports/util/exports_utils.a xbmc/cores/DllLoader/exports/exports.a xbmc/settings/settings.a xbmc/video/video.a xbmc/pvr/addons/pvraddons.a xbmc/pvr/windows/pvrwindows.a xbmc/guilib/guilib.a xbmc/cores/dvdplayer/DVDPlayer.a xbmc/cores/dvdplayer/DVDCodecs/DVDCodecs.a xbmc/cores/dvdplayer/DVDCodecs/Audio/Audio.a xbmc/cores/dvdplayer/DVDCodecs/Overlay/Overlay.a xbmc/cores/dvdplayer/DVDCodecs/Video/Video.a xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxers.a xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreams.a xbmc/cores/dvdplayer/DVDSubtitles/DVDSubtitles.a lib/SlingboxLib/SlingboxLib.a lib/libRTV/librtv.a lib/libXDAAP/libxdaap.a lib/libhts/libhts.a lib/libsquish/libsquish.a lib/xbmc-dll-symbols/dll-symbols.a xbmc/addons/addons.a xbmc/cdrip/cdrip.a xbmc/cores/AudioEngine/audioengine.a xbmc/cores/DllLoader/dllloader.a xbmc/cores/ExternalPlayer/ExternalPlayer.a xbmc/cores/VideoRenderers/VideoRenderer.a xbmc/cores/VideoRenderers/VideoShaders/VideoShaders.a xbmc/cores/cores.a xbmc/cores/paplayer/paplayer.a xbmc/cores/playercorefactory/playercorefactory.a xbmc/dbwrappers/dbwrappers.a xbmc/dialogs/dialogs.a xbmc/epg/epg.a xbmc/filesystem/MusicDatabaseDirectory/musicdatabasedirectory.a xbmc/filesystem/VideoDatabaseDirectory/videodatabasedirectory.a xbmc/filesystem/filesystem.a xbmc/input/input.a xbmc/interfaces/info/info.a xbmc/interfaces/interfaces.a xbmc/interfaces/json-rpc/json-rpc.a xbmc/music/dialogs/musicdialogs.a xbmc/music/infoscanner/musicscanner.a xbmc/music/karaoke/karaoke.a xbmc/music/music.a xbmc/music/tags/musictags.a xbmc/music/windows/musicwindows.a xbmc/network/libscrobbler/scrobbler.a xbmc/network/websocket/websocket.a xbmc/peripherals/bus/peripheral-bus.a xbmc/peripherals/devices/peripheral-devices.a xbmc/peripherals/dialogs/peripheral-dialogs.a xbmc/peripherals/peripherals.a xbmc/pictures/pictures.a xbmc/playlists/playlists.a xbmc/powermanagement/powermanagement.a xbmc/programs/programs.a xbmc/pvr/channels/pvrchannels.a xbmc/pvr/dialogs/pvrdialogs.a xbmc/pvr/pvr.a xbmc/pvr/recordings/pvrrecordings.a xbmc/pvr/timers/pvrtimers.a xbmc/rendering/rendering.a xbmc/storage/storage.a xbmc/video/dialogs/videodialogs.a xbmc/windowing/windowing.a xbmc/windows/windows.a xbmc/xbmc.a xbmc/network/httprequesthandler/httprequesthandlers.a xbmc/interfaces/legacy/legacy.a xbmc/interfaces/python/python_binding.a xbmc/rendering/gl/rendering_gl.a lib/libUPnP/libupnp.a xbmc/network/upnp/upnp.a xbmc/input/linux/input_linux.a xbmc/network/linux/network_linux.a xbmc/powermanagement/linux/powermanagement_linux.a xbmc/storage/linux/storage_linux.a xbmc/windowing/X11/windowing_X11.a lib/UnrarXLib/UnrarXLib.a xbmc/main/main.a -Wl,--no-whole-archive xbmc/threads/threads.a xbmc/commons/commons.a -lva -lva-glx -lsmbclient -lssh -lXrandr -lavahi-client -lavahi-common -lmicrohttpd -lSDL_image -lrt -ljasper -lresolv -ldl -ltinyxml -lyajl -lbluetooth -lmysqlclient -lssl -lcrypto -lz -llzo2 -lpthread -ltiff -ljpeg -lbz2 -lgcrypt -lgpg-error -lGLU -lGLEW -lGL -L/usr/lib -lpython2.7 -L/usr/lib/x86_64-linux-gnu -lmysqlclient -lpthread -lz -lm -lrt -ldl -lfribidi -lsqlite3 -lpng12 -lpcre -lpcrecpp -lpcre -lcdio -lm -lsamplerate -lfreetype -L/usr/local/lib -ltag -lasound -ldbus-1 -lpthread -lrt -lSDL -lasound -lhal -ldbus-1 -lpthread -lrt -lhal-storage -lhal -ldbus-1 -lpthread -lrt -lX11 -lXext -lXt -lX11 -lXmu -lXt -lX11 -ludev -lrt -rdynamic
Reply

Logout Mark Read Team Forum Stats Members Help
taglib problem0