Solaris compile problem

Started by Karl DeBisschopalmost 26 years ago7 messagesbugs
Jump to latest
#1Karl DeBisschop
kdebisschop@h00a0cc3b7988.ne.mediaone.net

============================================================================
POSTGRESQL BUG REPORT TEMPLATE
============================================================================

Your name : Karl DeBisschop
Your email address : kdebisschop@alert.infoplease.com

System Configuration
---------------------
Architecture (example: Intel Pentium) : Sun E-450

Operating System (example: Linux 2.0.26 ELF) : Solaris 7

PostgreSQL version (example: PostgreSQL-6.5.1): postgresql-7.0.1

Compiler used (example: gcc 2.8.0) : gcc version egcs-2.91.66
19990314 (egcs-1.1.2 release)

Please enter a FULL description of your problem:
------------------------------------------------

after `./configure --prefix-/opt/postgresql-7.0.1`
make bailed on libpq++

make[2]: Entering directory `/u/kdebisschop/postgresql-7.0.1/src/interfaces/libpq++'
ld -G -o libpq++.so.3.1 pgconnection.o pgdatabase.o pgtransdb.o pgcursordb.o pglobject.o -L../../interfaces/libpq -lpq -ldl -lsocket -lresolv -lnsl -lm -lc
pgconnection.o: could not read symbols: Bad value
make[2]: *** [libpq++.so.3.1] Error 1

I don't use libpq++.so.3.1 so I just did:

cd /u/kdebisschop/postgresql-7.0.1/src/interfaces/libpq++
gcc -shared -G -o libpq++.so.3.1 pgconnection.o pgdatabase.o pgtransdb.o pgcursordb.o pglobject.o -L../../interfaces/libpq -lpq -ldl -lsocket -lresolv -lnsl -lm -lc
cd ~/postgresql-7.0.1/src
make

and everything picked up fine (I have not yet run regression tests)

Please describe a way to repeat the problem. Please try to provide a
concise reproducible example, if at all possible:
----------------------------------------------------------------------

If you know how this problem might be fixed, list the solution below:
---------------------------------------------------------------------

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Karl DeBisschop (#1)
Re: Solaris compile problem

Karl DeBisschop <kdebisschop@h00a0cc3b7988.ne.mediaone.net> writes:

after `./configure --prefix-/opt/postgresql-7.0.1`
make bailed on libpq++

make[2]: Entering directory `/u/kdebisschop/postgresql-7.0.1/src/interfaces/libpq++'
ld -G -o libpq++.so.3.1 pgconnection.o pgdatabase.o pgtransdb.o pgcursordb.o pglobject.o -L../../interfaces/libpq -lpq -ldl -lsocket -lresolv -lnsl -lm -lc
pgconnection.o: could not read symbols: Bad value
make[2]: *** [libpq++.so.3.1] Error 1

Hmm. Did it build for you in the 7.0 release? I just went looking
for changes that could've caused this between 7.0 and 7.0.1, and
didn't see anything obvious...

regards, tom lane

#3Karl DeBisschop
kdebisschop@h00a0cc3b7988.ne.mediaone.net
In reply to: Karl DeBisschop (#1)
Re: Solaris compile problem

Tom Lane wrote:

Karl DeBisschop <kdebisschop@h00a0cc3b7988.ne.mediaone.net> writes:

after `./configure --prefix-/opt/postgresql-7.0.1`
make bailed on libpq++

make[2]: Entering directory `/u/kdebisschop/postgresql-7.0.1/src/interfaces/libpq++'
ld -G -o libpq++.so.3.1 pgconnection.o pgdatabase.o pgtransdb.o pgcursordb.o pglobject.o -L../../interfaces/libpq -lpq -ldl -lsocket -lresolv -lnsl -lm -lc
pgconnection.o: could not read symbols: Bad value
make[2]: *** [libpq++.so.3.1] Error 1

Hmm. Did it build for you in the 7.0 release? I just went looking
for changes that could've caused this between 7.0 and 7.0.1, and
didn't see anything obvious...

regards, tom lane

Sorry - I only had time to compile 7.0 for linux. Actually, the only
reason I'm compiling for solaris is to test a configure script for a
different OSS project. So it doesn't really bother me personally if
this doesn't get resolved immediately. One the other hand, if it does
ring a bell with anyone and there is a potential fix, I'd be glad to try
it out on the offending machine, just in the interest of making the
build process a little more robust.

--
Karl

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Karl DeBisschop (#3)
Re: Solaris compile problem

Karl DeBisschop <kdebisschop@h00a0cc3b7988.ne.mediaone.net> writes:

Hmm. Did it build for you in the 7.0 release? I just went looking
for changes that could've caused this between 7.0 and 7.0.1, and
didn't see anything obvious...

Sorry - I only had time to compile 7.0 for linux.

Can you say if libpq++ *ever* built on that platform? I'm guessing
that Solaris needs the same sort of hack that is present in libpq++'s
Makefile for irix5, ie set AR and LD to $(CXX). But if I'm right
then it'd never have worked...

regards, tom lane

#5Karl DeBisschop
kdebisschop@h00a0cc3b7988.ne.mediaone.net
In reply to: Karl DeBisschop (#1)
Re: Solaris compile problem

Tom Lane wrote:

Karl DeBisschop <kdebisschop@h00a0cc3b7988.ne.mediaone.net> writes:

Hmm. Did it build for you in the 7.0 release? I just went looking
for changes that could've caused this between 7.0 and 7.0.1, and
didn't see anything obvious...

Sorry - I only had time to compile 7.0 for linux.

Can you say if libpq++ *ever* built on that platform? I'm guessing
that Solaris needs the same sort of hack that is present in libpq++'s
Makefile for irix5, ie set AR and LD to $(CXX). But if I'm right
then it'd never have worked...

regards, tom lane

it did work in 6.4.2

and ld does work in other parts of the make - it only fails in this one
place.

--
Karl

#6Tom Lane
tgl@sss.pgh.pa.us
In reply to: Karl DeBisschop (#5)
Re: Solaris compile problem

Karl DeBisschop <kdebisschop@h00a0cc3b7988.ne.mediaone.net> writes:

Can you say if libpq++ *ever* built on that platform? I'm guessing
that Solaris needs the same sort of hack that is present in libpq++'s
Makefile for irix5, ie set AR and LD to $(CXX). But if I'm right
then it'd never have worked...

it did work in 6.4.2

OK, that's a useful datapoint.

and ld does work in other parts of the make - it only fails in this one
place.

Sure. I think the problem likely is that the stock "ld" on Solaris only
copes with C object files and not C++ object files. This only shows up
for libpq++ because we have no other C++ code in the distribution.

However, as far as I can tell from a quick scan through the CVS server,
6.4.* should've tried to use "ld" for libpq++ too. Could you rebuild
6.4.2 and see what the difference is in the build commands it uses?

regards, tom lane

#7Karl DeBisschop
kdebisschop@range.infoplease.com
In reply to: Karl DeBisschop (#1)
Re: Solaris compile problem

Tom Lane wrote:

Karl DeBisschop <kdebisschop@h00a0cc3b7988.ne.mediaone.net> writes:

Can you say if libpq++ *ever* built on that platform? I'm guessing
that Solaris needs the same sort of hack that is present in libpq++'s
Makefile for irix5, ie set AR and LD to $(CXX). But if I'm right
then it'd never have worked...

it did work in 6.4.2

OK, that's a useful datapoint.

and ld does work in other parts of the make - it only fails in this one
place.

Sure. I think the problem likely is that the stock "ld" on Solaris only
copes with C object files and not C++ object files. This only shows up
for libpq++ because we have no other C++ code in the distribution.

However, as far as I can tell from a quick scan through the CVS server,
6.4.* should've tried to use "ld" for libpq++ too. Could you rebuild
6.4.2 and see what the difference is in the build commands it uses?

regards, tom lane

downloaded the source and rebuilt. make died at the same place. Yet
the old install does have libpq++ in place.

6.4.2 was orignally compiled by another developer here. So I don't know
if he had the same problem and used the same hack to get past it, or if
there was a difference in his environment settings (or something has
been upgraded in between times - it seems we may have been on Solaris 6
when 6.4.2 was last compiled, for instance)

I'll talk to the developer when he gets in, but this tack may be a dead
end.

--
Karl