Thread: Solaris compile problem
============================================================================ 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: ---------------------------------------------------------------------
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
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
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
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
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
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