[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: dpkg-shlibdeps: not finding just build libraries



Hector Oron <hector.oron@gmail.com> writes:

> Hello,
>
> I am trying to build a package (binutils for cross targets) which now
> also builds a shared library (libbfd) which fullfills the dependency
> of some binaries just built (objdump; objcopy).
> The upstream code builds fine, but, when I trigger dh_shlibdeps....
>
> [...]

How does the dh_makeshlibs call look like? And what do the shlibs files
it generates look like?

> dh_installdeb -s
> LD_LIBRARY_PATH=/usr/lib/libfakeroot:/usr/lib64/libfakeroot:/usr/lib32/libfakeroot:/usr/arm-linux-gnueabi/lib
> dh_shlibdeps -s
> dpkg-shlibdeps: error: couldn't find library libbfd-2.20.1.20100303.so
> needed by debian/binutils-arm-linux-gnueabi/usr/bin/arm-linux-gnueabi-objcopy
> (ELF format: 'elf32-i386'; RPATH:
> '/usr/arm-linux-gnueabi/i486-linux-gnu/arm-linux-gnueabi/lib').
> Note: libraries are not searched in other binary packages that do not
> have any shlibs or symbols file.
> To help dpkg-shlibdeps find private libraries, you might need to set
> LD_LIBRARY_PATH.
> dh_shlibdeps: dpkg-shlibdeps
> -Tdebian/binutils-arm-linux-gnueabi.substvars
> debian/binutils-arm-linux-gnueabi/usr/bin/arm-linux-gnueabi-strip
> debian/binutils-arm-linux-gnueabi/usr/bin/arm-linux-gnueabi-strings
> debian/binutils-arm-linux-gnueabi/usr/bin/arm-linux-gnueabi-objdump
> debian/binutils-arm-linux-gnueabi/usr/bin/arm-linux-gnueabi-nm
> debian/binutils-arm-linux-gnueabi/usr/bin/arm-linux-gnueabi-addr2line
> debian/binutils-arm-linux-gnueabi/usr/bin/arm-linux-gnueabi-gprof
> debian/binutils-arm-linux-gnueabi/usr/bin/arm-linux-gnueabi-objcopy
> debian/binutils-arm-linux-gnueabi/usr/bin/arm-linux-gnueabi-readelf
> debian/binutils-arm-linux-gnueabi/usr/bin/arm-linux-gnueabi-as
> debian/binutils-arm-linux-gnueabi/usr/bin/arm-linux-gnueabi-size
> debian/binutils-arm-linux-gnueabi/usr/bin/arm-linux-gnueabi-ar
> debian/binutils-arm-linux-gnueabi/usr/bin/arm-linux-gnueabi-ld
> debian/binutils-arm-linux-gnueabi/usr/bin/arm-linux-gnueabi-c++filt
> debian/binutils-arm-linux-gnueabi/usr/bin/arm-linux-gnueabi-ranlib
> returned exit code 2
> make: *** [binary-arch] Error 9
> dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2
>
>
> Those missing libs are just build under:
> $ ls -l install/binutils/usr/arm-linux-gnueabi/i486-linux-gnu/arm-linux-gnueabi/lib/
> total 7896
> -rwxr-xr-x 1 zumbi zumbi 2502645 may  4 16:14 libbfd-2.20.1.20100303.so
> -rw-r--r-- 1 zumbi zumbi 4788842 may  4 16:14 libbfd.a
> -rwxr-xr-x 1 zumbi zumbi    1095 may  4 16:14 libbfd.la
> lrwxrwxrwx 1 zumbi zumbi      25 may  4 16:14 libbfd.so ->
> libbfd-2.20.1.20100303.so
> -rwxr-xr-x 1 zumbi zumbi  287677 may  4 16:14 libopcodes-2.20.1.20100303.so
> -rw-r--r-- 1 zumbi zumbi  464144 may  4 16:14 libopcodes.a
> -rwxr-xr-x 1 zumbi zumbi    1118 may  4 16:14 libopcodes.la
> lrwxrwxrwx 1 zumbi zumbi      29 may  4 16:14 libopcodes.so ->
> libopcodes-2.20.1.20100303.so

That directory is not searched by dpkg-shlibdeps. You should have a

debain/<package>/DEBIAN/shlibs
debian/ypackage>/usr/arm-linux-gnueabi/i486-linux-gnu/arm-linux-gnueabi/lib/libbfd-2.20.1.20100303.so

The first tells dpkg-shlibdeps to search that package and the later is
where the RPATH makes it look.

> Those missing libraries (I expect) are also found at binutils-dev |
> binutils-multiarch
> $ dpkg -S libbfd-2.20.1.20100303.so
> dpkg: *libbfd-2.20.1.20100303.so* not found.

So you don't have an matching lib installed. But even if you had that
would be the wrong one. Other than as reference what libs should be in
the cross package looking at the installed debs is quite useless. The
cross binutils should not depend on the normal binutils I think.

> $ dpkg -L binutils-dev
> [...]
> /usr/lib/libbfd.a
> desviado por binutils-multiarch a: /usr/lib/libbfd-single.a
> /usr/lib/libopcodes.a
> desviado por binutils-multiarch a: /usr/lib/libopcodes-single.a
> /usr/lib/libopcodes.so
> /usr/lib/libbfd.so
>
> $ dpkg -L binutils-multiarch
> [...]
> /usr/lib/libopcodes-2.20.1-multiarch.20100303.so
> /usr/lib/libbfd-2.20.1-multiarch.20100303.so
>
> OK, now, how should I proceed if I want to use just build
> libbfd-2.20.1.20100303.so?
> Should I best use libbfd-2.20.1-multiarch.20100303.so provided by
> binutils-multiarch package?
>
> How do I instruct dh_shlibdeps to find the just build library or the other one?
>
> Kind regards,

First thing to check is that you actualy do have the library in some
package and the right shlibs information.

You should not be using the system libraries as you need the shlibs
information of the library you just compiled. Using the systems shlibs
file could give you wrong information and also the wrong package.

MfG
        Goswin


Reply to: