Posts: 548
Joined: Aug 2012
Reputation:
0
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.
Posts: 548
Joined: Aug 2012
Reputation:
0
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.
Posts: 548
Joined: Aug 2012
Reputation:
0
Hmm, maybe i didn't do it before configure, only before make. Will clean up and try again.
Posts: 548
Joined: Aug 2012
Reputation:
0
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?
Posts: 548
Joined: Aug 2012
Reputation:
0
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
Posts: 11,582
Joined: Feb 2008
Reputation:
84
davilla
Retired-Team-XBMC Developer
Posts: 11,582
looks like you need to build libtag as x86_64
Posts: 548
Joined: Aug 2012
Reputation:
0
How can i change the Makefile for taglib to do that? Looking at it now and don't see a obvious way.
Posts: 12,706
Joined: Nov 2003
Reputation:
129
spiff
Team-Kodi Member
Posts: 12,706
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.
Posts: 548
Joined: Aug 2012
Reputation:
0
Well i'm doing this to learn and now i've learned something. Thank you.
Posts: 548
Joined: Aug 2012
Reputation:
0
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?
Posts: 12,706
Joined: Nov 2003
Reputation:
129
spiff
Team-Kodi Member
Posts: 12,706
no, that won't be an issue. show me the linker line for xbmc.bin (make V=1)
Posts: 548
Joined: Aug 2012
Reputation:
0
/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