[yocto] Shared library questions
Gary Thomas
gary at mlbassoc.com
Tue Nov 4 05:08:48 PST 2014
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
------------------------------------------------------------
More information about the yocto
mailing list