[asterisk-dev] pjproject: separate libraries

Tzafrir Cohen tzafrir.cohen at xorcom.com
Sun Apr 21 07:18:47 CDT 2013


Hi all,

Is this the right place for dynaminc pjproject packaging dilemmas?

I built Asterisk with the dynamic library pjproject.

Now I have:

$ ldd res/res_rtp_asterisk.so 
        linux-vdso.so.1 =>  (0x00007fced667c000)
        libpjsua.so.2 => /usr/lib/libpjsua.so.2 (0x00007fced6189000)
        libpjsip-ua.so.2 => /usr/lib/libpjsip-ua.so.2 (0x00007fced5f70000)
        libpjsip-simple.so.2 => /usr/lib/libpjsip-simple.so.2 (0x00007fced5d5a000)
        libpjsip.so.2 => /usr/lib/libpjsip.so.2 (0x00007fced5b0d000)
        libpjmedia-codec.so.2 => /usr/lib/libpjmedia-codec.so.2 (0x00007fced5901000)
        libpjmedia.so.2 => /usr/lib/libpjmedia.so.2 (0x00007fced56ac000)
        libpjmedia-videodev.so.2 => /usr/lib/libpjmedia-videodev.so.2 (0x00007fced54aa000)
        libpjmedia-audiodev.so.2 => /usr/lib/libpjmedia-audiodev.so.2 (0x00007fced52a1000)
        libpjnath.so.2 => /usr/lib/libpjnath.so.2 (0x00007fced5078000)
        libpjlib-util.so.2 => /usr/lib/libpjlib-util.so.2 (0x00007fced4e5b000)
        libsrtp.so.0 => /usr/lib/libsrtp.so.0 (0x00007fced4c3d000)
        libgsm.so.1 => /usr/lib/x86_64-linux-gnu/libgsm.so.1 (0x00007fced4a2f000)
        libspeex.so.1 => /usr/lib/x86_64-linux-gnu/libspeex.so.1 (0x00007fced4817000)
        libspeexdsp.so.1 => /usr/lib/x86_64-linux-gnu/libspeexdsp.so.1 (0x00007fced4605000)
        libportaudio.so.2 => /usr/lib/x86_64-linux-gnu/libportaudio.so.2 (0x00007fced43d5000)
        libpj.so.2 => /usr/lib/libpj.so.2 (0x00007fced41a9000)
        libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007fced3fa4000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fced3d21000)
        libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007fced3b09000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fced3901000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fced36e4000)
        libasound.so.2 => /usr/lib/x86_64-linux-gnu/libasound.so.2 (0x00007fced33f0000)
        libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007fced300c000)
        libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007fced2dac000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fced2a22000)
        libjack.so.0 => /usr/lib/x86_64-linux-gnu/libjack.so.0 (0x00007fced2803000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fced667d000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fced25fe000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fced23e7000)

At first glance I believe that from those 30 lines the ones I actually
need are:

        linux-vdso.so.1 =>  (0x00007fced667c000)
        libpjsip.so.2 => /usr/lib/libpjsip.so.2 (0x00007fced5b0d000)
        libpjnath.so.2 => /usr/lib/libpjnath.so.2 (0x00007fced5078000)
        libpjlib-util.so.2 => /usr/lib/libpjlib-util.so.2 (0x00007fced4e5b000)
        libpj.so.2 => /usr/lib/libpj.so.2 (0x00007fced41a9000)
        libcrypto.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007fced300c000)
        libssl.so.1.0.0 => /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007fced2dac000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fced2a22000)
        libjack.so.0 => /usr/lib/x86_64-linux-gnu/libjack.so.0 (0x00007fced2803000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fced667d000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fced25fe000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fced23e7000)

There are two issues here:

1. pjproject's build links all the different pj* libraries with a
certain set of libraries, and thus anything that gets linked with any of
them gets linked iwth, say, libm, libuuid and whatever.

2. There is a single libpjproject.pc pkg-config file. Asterisk only
needs to be lined with pjnath (and what others?) and this would have
pulled pj, pjlib-utils and one or two more. But as there is a single
option, all the media libraries are pulled in as well.

Which libraries does Asterisk really need? Which target libraries would
it make sense to have pkg-config files for?

-- 
               Tzafrir Cohen
icq#16849755              jabber:tzafrir.cohen at xorcom.com
+972-50-7952406           mailto:tzafrir.cohen at xorcom.com
http://www.xorcom.com  iax:guest at local.xorcom.com/tzafrir



More information about the asterisk-dev mailing list