[pulseaudio-discuss] [PATCH] Explicitly link against pulse libraries

Colin Guthrie gmane at colin.guthr.ie
Fri Oct 15 00:58:31 PDT 2010

'Twas brillig, and Luke Yelavich at 15/10/10 04:31 did gyre and gimble:
> From: Luke Yelavich <luke.yelavich at canonical.com>
> When building pulseaudio master using gcc 4.5.2 and binutils
> 2.20.51 plus latest snapshot from 2010-10-14, ld complained about missing
> symbols. This patch explicitly links more pulseaudio libraries to satisfy
> the linker.

When you say snapshot do you mean master or stable-queue?

I'm a bit puzzled by this as I don't seem to have the problem here (I'm
a point behind on the gcc tho' which could explain it).

As PA already has an internal circular dep you cannot use --no-undefined
or --as-needed so it's already fairly overlinked internally hence why
these issues don't always crop up so commonly.

Indeed doing ldd on a paplay (built as part of pulseaudio and without
no-undefined or as-needed) vs. a normal pulseaudio client e.g. mplayer
(which is compiled with no-undefined and as-needed) you see an
interesting story:

[colin at jimmy ~]$ ldd `which paplay` | grep pulse
	libpulse.so.0 => /usr/lib64/libpulse.so.0 (0x00007fdf72d8c000)
	libpulsecommon-0.9.21.so => /usr/lib64/libpulsecommon-0.9.21.so
[colin at jimmy ~]$ ldd `which mplayer` | grep pulse
	libpulse.so.0 => /usr/lib64/libpulse.so.0 (0x00007f5f55c44000)
	libpulsecommon-0.9.21.so => /usr/lib64/libpulsecommon-0.9.21.so

Both appear to be quite similar right? But compare them to this:

[colin at jimmy ~]$ objdump -p `which paplay` | grep pulse
  NEEDED               libpulse.so.0
  NEEDED               libpulsecommon-0.9.21.so
  required from libpulse.so.0:
[colin at jimmy ~]$ objdump -p `which mplayer` | grep pulse
  NEEDED               libpulse.so.0
  required from libpulse.so.0:

This clearly shows that paplay is overlinked.

Distros which do not much care about trying to prevent overlinking (I'm
thinking Fedora... but not confirmed personally - just going on what
I've been told in the past) will have to rebuild a whole lot more
packages when libpulsecommon-0.9.21.so changes to 0.9,22+

This is likely not relevant to your patch, but I'm still curious as to
why your problem is cropping up now. I guess it could easily be related
to gcc point release but I wouldn't have expected such an invasive
change would have been made deliberately.



Colin Guthrie

Day Job:
  Tribalogic Limited [http://www.tribalogic.net/]
Open Source:
  Mageia Contributor [http://www.mageia.org/]
  PulseAudio Hacker [http://www.pulseaudio.org/]
  Trac Hacker [http://trac.edgewall.org/]

More information about the pulseaudio-discuss mailing list