Обсуждение: Solaris compile problem

Поиск
Список
Период
Сортировка

Solaris compile problem

От
Karl DeBisschop
Дата:
============================================================================
                        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:
---------------------------------------------------------------------

Re: Solaris compile problem

От
Tom Lane
Дата:
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

Re: Solaris compile problem

От
Karl DeBisschop
Дата:
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

Re: Solaris compile problem

От
Tom Lane
Дата:
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

Re: Solaris compile problem

От
Karl DeBisschop
Дата:
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

Re: Solaris compile problem

От
Tom Lane
Дата:
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

Re: Solaris compile problem

От
Karl DeBisschop
Дата:
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