[Speex-dev] PIC issues... Linking statically to speex when generating a shared library..

Keith Kyzivat kkyzivat at sipez.com
Fri Jan 4 10:42:37 PST 2008


The short:  Linking to libspeex.a when generating a .so using libtool
results in a non-portability warning.  This is due to PIC code and non-PIC
code intermingling.
How can I go about fixing this whilst still using an installed libspeex
present on the user's system?


The long:
I am using autoconf + libtool to generate a codec plugin for speex
(sipXmediaLib), and I'm trying to eliminate the libspeex.so shared library
dependency -- I'd like to have it all in one package - so all that is needed
is to drop a single plugin that is then dlopened by our application to
supply support for the speex codec (and other codecs too, but that
conversation doesn't belong here).

Here's how I link statically to libspeex now in the plugin's Makefile.am --
which intermingles PIC code (the non-library source in the new shared
library) and position dependent code (libspeex.a):
    codec_speex_la_SOURCES = PlgSpeex.c speex_nb.c speex_uwb.c speex_wb.c
    codec_speex_la_LIBADD = @SPEEX_ROOT@/libspeex/.libs/libspeex.a
    codec_speex_la_LDFLAGS = -module -avoid-version

(which, I just spotted, will not be correct for installed versions of speex
-- only ones we build -- since installed versions will not have the .a in a
.lib directory -- but in any case, it should illustrate things well enough)

This generates the warning from libtool:
    *** Warning: Linking the shared library codec_speex.la against the
    *** static library
../../../../../sipXmediaLib/contrib/libspeex/libspeex/.libs/libspeex.a is
not portable!

It seems this is a problem for a lot of projects..

Is there a way to do this portably?
Is there a good reason that speex (and many other projects) build static
libraries with position dependent code and not PIC?  (Given that I have
never seen this done, I'm guessing there must be a good reason)

-- 
Keith Kyzivat

SIPez LLC.
SIP VoIP, IM and Presence Consulting
http://www.SIPez.com
tel: +1 (617) 273-4000
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.xiph.org/pipermail/speex-dev/attachments/20080104/ca23ca9e/attachment.htm


More information about the Speex-dev mailing list