RPATH issue with libpq on Solaris 8 (gcc)

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

 



I'm interested in some guidance on how to best deal with the following
issue.

I'm building postgres-8.2.5 on Solaris 8 SPARC, using a gcc built (not
by me) for our environment.  We have an old home-grown software
distribution/configuration management system that arranges
shared-objects and binaries are in non-standard places.  So to find
them, I use -L and -R in $(CFLAGS) and $(LFLAGS) to make sure
dependencies (like krb5/ssl libraries) are found.  The problem is, the
Makefile.shlib doesn't arrange to have the $(CFLAGS) passed to gcc,
since maybe it assumes gcc on Solaris SPARC doesn't need it?  So, while
psql can find the shared objects, libpq can't, because libpq doesn't
have the rpath I gave it!  An example:

  % env | grep FLAGS
LDFLAGS=-R/software/readline-5.2/lib:/software/gcc-3.4.5/lib:/software/openssl-0.9.8_runtime/lib:/software/krb5-1.6/lib
CFLAGS=-R/software/readline-5.2/lib:/software/gcc-3.4.5/lib:/software/openssl-0.9.8_runtime/lib:/software/krb5-1.6/lib

Then I configure && make && make install, only to find:

  % ldd -s libpq.so | head

   find object=libssl.so.0.9.8; required by ./libpq.so
    search
path=/software/gcc-3.4.5_runtime/lib:/software/postgresql-8.2/lib
(RPATH from file ./libpq.so)
    trying path=/software/gcc-3.4.5_runtime/lib/libssl.so.0.9.8
    trying path=/software/postgresql-8.2/lib/libssl.so.0.9.8
    search path=/usr/lib  (default)
    trying path=/usr/lib/libssl.so.0.9.8
        libssl.so.0.9.8 =>       (file not found)

yet from 'ldd -s psql':

   find object=libssl.so.0.9.8; required by psql
    search
path=/software/readline-5.2/lib:/software/gcc-3.4.5_runtime/lib:/software/openssl-0.9.8_runtime/lib:/software/krb5-1.6/lib:/softwar
e/postgresql-8.2/lib  (RPATH from file psql)
    trying path=/software/readline-5.2/lib/libssl.so.0.9.8
    trying path=/software/gcc-3.4.5_runtime/lib/libssl.so.0.9.8
    trying path=/software/openssl-0.9.8_runtime/lib/libssl.so.0.9.8
        libssl.so.0.9.8 =>
/software/openssl-0.9.8_runtime/lib/libssl.so.0.9.8


If I hack Makefile.shlib in pgsql/src:

ifeq ($(PORTNAME), solaris)
  ifeq ($(GCC), yes)
    LINK.shared         = $(CC) -shared $(CFLAGS)
#                                       ^^^^^^^^^ I added this.
  else
    LINK.shared         = $(CC) -G $(CFLAGS)    # CFLAGS added for X86_64

then it's all good.

Would this be considered a bug, or would my environment be considered
"unsupported"???



---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux