2011/10/17 Brian Cameron <brian.cameron at oracle.com>: > I found this issue when I try to build PA clients. ?For example, when > PulseAudio tries to build pactl, I see these errors. ?I see similar > errors trying to build any PA client: > > Undefined ? ? ? ? ? ? ? ? ? ? ? first referenced > ?symbol ? ? ? ? ? ? ? ? ? ? ? ? ? ? in file > pa_object_unref > /home/brianca/packages/BUILD/SUNWpulseaudio-1.0/amd64/pulseaudio-1.0/src/.libs/libpulsecommon-1.0.so > pa_sink_input_type_id > /home/brianca/packages/BUILD/SUNWpulseaudio-1.0/amd64/pulseaudio-1.0/src/.libs/libpulsecommon-1.0.so > pa_object_type_id > /home/brianca/packages/BUILD/SUNWpulseaudio-1.0/amd64/pulseaudio-1.0/src/.libs/libpulsecommon-1.0.so > pa_msgobject_type_id > /home/brianca/packages/BUILD/SUNWpulseaudio-1.0/amd64/pulseaudio-1.0/src/.libs/libpulsecommon-1.0.so > pa_source_output_type_id > /home/brianca/packages/BUILD/SUNWpulseaudio-1.0/amd64/pulseaudio-1.0/src/.libs/libpulsecommon-1.0.so > pa_object_ref > /home/brianca/packages/BUILD/SUNWpulseaudio-1.0/amd64/pulseaudio-1.0/src/.libs/libpulsecommon-1.0.so > pa_sink_type_id > /home/brianca/packages/BUILD/SUNWpulseaudio-1.0/amd64/pulseaudio-1.0/src/.libs/libpulsecommon-1.0.so > pa_source_type_id > /home/brianca/packages/BUILD/SUNWpulseaudio-1.0/amd64/pulseaudio-1.0/src/.libs/libpulsecommon-1.0.so > pa_core_type_id > /home/brianca/packages/BUILD/SUNWpulseaudio-1.0/amd64/pulseaudio-1.0/src/.libs/libpulsecommon-1.0.so > ld: fatal: symbol referencing errors. No output written to .libs/pacat > > I found that using the attached patch which causes PA clients to link > against libpulsecore fixes this problem. ?Now that I am looking at this > more closely, I suspect the problem is that PA clients are including > header files that define functions that are not included in the clients. I audited the utils and tests and the following programs where your patch adds libpulsecore only use functionality from libpulse and libpulsecommon: pacat, pactl, pasuspender, pacmd, pax11publish, mainloop-test, voltest libpulsecore should not be added for these, because they don't use functionality from that library. Your output log from above suggests that something in libpulsecommon uses functionality from pulsecore/object.[ch], so those files should probably be moved to from libpulsecore to libpulsecommon. Does that fix linking on Solaris? The rest of the utils only use public libpulse headers, so for these libpulsecommon should even be removed from the linker line. get-binary-name, pacat-simple, parec-simple, extended-test, channelmap-test, sync-playback, gtk-test, connect-stress Maarten