From: Peter G. <jpg...@gm...> - 2008-04-22 14:19:02
|
On Tue, Apr 22, 2008 at 5:58 AM, Andrea Suisani <si...@op...> wrote: > Hi all, > > tclers on that list will really appreciate if someone > with a better knowledge of iaxclient building system help > us to get rid of that annoying problem :) > > let me summarize: > > - goal: build a "self-contained" libtcliaxclient0.2.so with speex and > portaudio statically linked in. > > - building iaxclient and tcl extensions (placed in contrib/tcl) > the usual way lead me to a working .so file of 34 KB with this > dependencies > > sickpig@suino:/usr/lib/tcliaxclient0.2$ldd libtcliaxclient0.2.so > linux-gate.so.1 => (0xffffe000) > libspeexdsp.so.1 => /usr/local/lib/libspeexdsp.so.1 (0xb7f5a000) > libspeex.so.1 => /usr/local/lib/libspeex.so.1 (0xb7f43000) > libiaxclient.so.1 => /usr/local/lib/libiaxclient.so.1 (0xb7f1c000) > libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7f04000) > libasound.so.2 => /usr/lib/libasound.so.2 (0xb7e3e000) > libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7cf4000) > libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7cce000) > libportaudio.so.2 => /usr/local/lib/libportaudio.so.2 (0xb7ca7000) > libgsm.so.1 => /usr/lib/libgsm.so.1 (0xb7c97000) > /lib/ld-linux.so.2 (0x80000000) > libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7c93000) > libjack.so.0 => /usr/lib/libjack.so.0 (0xb7c7a000) > librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb7c70000) > > - building the bit following instructions contained in contrib/tcl/build-iaxclient.txt, > trying to get a tcl extensions with speex and portaudio linked statically, > give me a not working library due to: > > sickpig@suino:~$ tclsh > % package require iaxclient > couldn't load file "/usr/lib/tcliaxclient0.2/libtcliaxclient0.2.so": /usr/lib/tcliaxclient0.2/libtcliaxclient0.2.so: undefined symbol: speex_preprocess_ctl > > size of tcl extensions is bigger but still... > > sickpig@suino:~/src/iaxclient-svn-tree/trunk/contrib/tcl$ ls -lh libtcliaxclient0.2.so > -rwxr-xr-x 1 sickpig sickpig 320K 2008-04-18 14:34 libtcliaxclient0.2.so > > with those shared library dependencies > > sickpig@suino:~/src/iaxclient-svn-tree/trunk/contrib/tcl$ ldd libtcliaxclient0.2.so > linux-gate.so.1 => (0xffffe000) > libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7efe000) > libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7db4000) > /lib/ld-linux.so.2 (0x80000000) > > > any hints? am I missing something obvious? You don't give many clues as to what might be going wrong. Do you set the PKG_CONFIG_PATH when you configure iaxclient? Where do iaxclient's dependencies get installed? /usr/local? Do you have different versions of speex, portaudio, etc. installed in /usr/lib? You should know that this whole exercise of building a shared object with no shared object dependencies is much like swimming upstream. The build tools are all geared towards either building things statically or building things shared, but not mixing the two in this way. I am curious as to why it is so important to avoid these dynamic link dependencies -- especially on linux? Pete |