[request] add --rpath for zlib and bzip2

Norihiko Murase skeleten at shillest.net
Sat Jan 15 19:56:46 CET 2005


Hi,
I tried building GnuPG-1.2.6 under the following environment:
    CPU: i386 family
    OS: FreeBSD 4.8-RELEASE
    Compiler: gcc-2.95.4 (/usr/bin/gcc)
However, the built binaries (gpg, gpgv, ...) load the shared
libraries INCORRECTLY even if I add --enable-rpath option to
the configure script.
----------
% ldd gnupg-1.2.6/g10/{gpg,gpgv}
gnupg-1.2.6/g10/gpg:
	libz.so => /usr/lib/libz.so (0x280f3000)
	libbz2.so.1 => /usr/lib/libbz2.so.1 (0x28100000)
	libc.so.4 => /usr/lib/libc.so.4 (0x28110000)
gnupg-1.2.6/g10/gpgv:
	libz.so => /usr/lib/libz.so (0x280a2000)
	libbz2.so.1 => /usr/lib/libbz2.so.1 (0x280af000)
	libc.so.4 => /usr/lib/libc.so.4 (0x280bf000)
% 
----------
They should have loaded /usr/local/lib/lib{z,bz2}.so, NOT
that in /usr/lib.


I did build GnuPG-1.2.6 in the following method:
    [01]% bzip2 -cd gnupg-1.2.6.tar.bz2 | gtar xf -
    [02]% cd gnupg-1.2.6
    [03]% patch -p1 < ../patch_1
        The patch 'patch_1' is described at
        http://
    [04]% env MAKE=gmake ./configure               \
            --prefix=/usr/local/GnuPG              \
            .....                                  \
            --disable-nls                          \
            --enable-rpath --without-included-zlib \
            --with-zlib=/usr/local --with-bzip2=/usr/local
    [05]% gmake

The binaries (gpg, gpgv, ...) built in this method should
have loaded
    /usr/local/lib/libbz2.so
    /usr/local/lib/libz.so
However, the following libraries are loaded:
    /usr/lib/libbz2.so
    /usr/lib/libz.so
as the above result of ldd command tells.


I consider that the solution for this problem is to add the
--rpath option when you build binaries with the
--enable-rpath option specified.
    -L/usr/local/lib -Wl,--rpath -Wl,/usr/local/lib
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    -L/usr/local/lib -Wl,--rpath -Wl,/usr/local/lib
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ... -lz -lbz2

It is also a fact that we can avoid this by setting LDFLAGS
environment variable "-R/usr/local/lib:/usr/local/lib" when
we execute the configure script.
  % env MAKE=gmake LDFLAGS="-R/usr/local/lib:/usr/local/lib" \
      ./configure .....


---
Norihiko Murase <skeleten at shillest.net>



More information about the Gnupg-devel mailing list