Sorry if this is a bit off topic, but I'm having issues with
how [some of my] shared libraries are being packaged and used.

I have a library recipe which uses this line to pack up it's
shared libraries:
    oe_libinstall -C lib -so libflx_fes ${D}${libdir}
This yields this in it's install image:

    $ ls -l tmp/work/ppc603e-amltd-linux/flx-fes-lib/1.2.1-r0/image/usr/lib
    total 20
    lrwxrwxrwx 1 gthomas gthomas    19 Nov  3 12:53 libflx_fes.so -> 
libflx_fes.so.1.2.1
    lrwxrwxrwx 1 gthomas gthomas    19 Nov  3 12:53 libflx_fes.so.1 -> 
libflx_fes.so.1.2.1
    -rwxr-xr-x 3 gthomas gthomas 17238 Nov  3 12:53 libflx_fes.so.1.2.1

This all looks good to me.  This is then packaged as:

    
tmp/work/ppc603e-amltd-linux/flx-fes-lib/1.2.1-r0/packages-split/flx-fes-lib-dev/usr/lib:
    total 0
    lrwxrwxrwx 1 gthomas gthomas 19 Nov  3 13:00 libflx_fes.so -> 
libflx_fes.so.1.2.1

    
tmp/work/ppc603e-amltd-linux/flx-fes-lib/1.2.1-r0/packages-split/flx-fes-lib/usr/lib:
    total 12
    lrwxrwxrwx 1 gthomas gthomas   19 Nov  3 13:00 libflx_fes.so.1 -> 
libflx_fes.so.1.2.1
    -rwxr-xr-x 2 gthomas gthomas 8296 Nov  3 13:00 libflx_fes.so.1.2.1

So the libflx_fes.so ends up in the -dev package and the rest
in the -lib package.

I then have another package that depends on flx-fes-lib.  It
uses the library via this link line:
    powerpc-amltd-linux-gcc  -m32 -mhard-float -mcpu=603e \
      
--sysroot=/home/local/efacec-latest_2014-10-15/map8001-ppc8379-v2/tmp/sysroots/map8001-ppc8379-revF
 \
      -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -L../lib/ \
      -o ../bin/flx_redundancy_supervision redundancy_supervision.o 
redundancy_supervision_ctrl.o
      -lpacket_lib -lsupervision_lib -lflx_fes -lrt

The weird thing is that this ends up with the program depending
on the libflx_fes.so, not the versioned library libflx_fes.so.1
    # ldd /usr/sbin/flx_redundancy_daemon
        linux-vdso32.so.1 (0x00100000)
        libpacket_lib.so.0 => /usr/lib/libpacket_lib.so.0 (0x0ffdd000)
        libsupervision_lib.so.0 => /usr/lib/libsupervision_lib.so.0 (0x0ffb8000)
        libflx_fes.so => not found
        librt.so.1 => /lib/librt.so.1 (0x0ff90000)
        libc.so.6 => /lib/libc.so.6 (0x0fe18000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x0fdde000)
        /lib/ld.so.1 (0x48000000)

I also get a warning from bitbake:
    WARNING: QA Issue: flx-redundancy-supervision requires libflx_fes.so, but 
no providers in its RDEPENDS [file-rdeps]

Can someone explain why this is happening and how I fix it?

Sadly, I can't share these recipes or the code (they are available
to me only under NDA).  If needed, I could try to replicate the
issue with something I can share.

--
------------------------------------------------------------
Gary Thomas                 |  Consulting for the
MLB Associates              |    Embedded world
------------------------------------------------------------
--
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to