From: | Jason Testart <jatestart(at)cs(dot)uwaterloo(dot)ca> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | RPATH issue with libpq on Solaris 8 (gcc) |
Date: | 2007-11-03 03:59:23 |
Message-ID: | 472BF21B.2070907@cs.uwaterloo.ca |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
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"???
From | Date | Subject | |
---|---|---|---|
Next Message | rihad | 2007-11-03 07:09:05 | Would an index benefit select ... order by? |
Previous Message | Myshkin LeVine | 2007-11-03 03:46:44 | Re: Problem starting the server with Mac OSX |