DBD::Pg 2.10.7 compile failed on RH4

Started by Nonameover 17 years ago4 messagesgeneral
Jump to latest
#1Noname
Tapio.Niva@tietoenator.com

Hello,
we have 32-bit PostgreSQL version 8.3.4 on 64-bit RHEL4 , Postgres
itself is working as expected.
We are using PostreSQL via following perl version
............................................
# perl -v
This is perl, v5.10.0 built for i686-linux-thread-multi
(with 4 registered patches, see perl -V for more detail)
Copyright 1987-2007, Larry Wall
Binary build 1004 [287188] provided by ActiveState
http://www.ActiveState.com
Built Sep 3 2008 11:22:08
............................................

Our problem is that DBD::Pg version 2.10.7 will not compile ,
/usr/bin/ld skips all libpq files as incompatible - please see a slice
of the result below :
............................................
rm -f blib/arch/auto/DBD/Pg/Pg.so
LD_RUN_PATH="/usr/lib" gcc -shared -O2 Pg.o dbdimp.o quote.o types.o
-o blib/arch/auto/DBD/Pg/Pg.so \
-L/usr/lib -lpq -lm \

/usr/bin/ld: skipping incompatible /usr/lib/libpq.so when searching for
-lpq
/usr/bin/ld: skipping incompatible /usr/lib/libpq.a when searching for
-lpq
/usr/bin/ld: skipping incompatible
/usr/lib/gcc/x86_64-redhat-linux/3.4.6/../../../libpq.so when searching
for -lpq
/usr/bin/ld: skipping incompatible
/usr/lib/gcc/x86_64-redhat-linux/3.4.6/../../../libpq.a when searching
for -lpq
/usr/bin/ld: skipping incompatible /usr/lib/libpq.so when searching for
-lpq
/usr/bin/ld: skipping incompatible /usr/lib/libpq.a when searching for
-lpq
/usr/bin/ld: cannot find -lpq
collect2: ld returned 1 exit status
make: *** [blib/arch/auto/DBD/Pg/Pg.so] Error 1
............................................
libpq files available ( actually there seems to be only 1
file=/usr/lib/libpq.so.5.1 with 2 links to it ) are as below :
............................................
# find / -name libpq.so*
/usr/lib/libpq.so.5.1
/usr/lib/libpq.so
/usr/lib/libpq.so.5
# ll /usr/lib/libpq.so.5.1
-rwxr-xr-x 1 root root 122616 Sep 20 18:52 /usr/lib/libpq.so.5.1
# ll /usr/lib/libpq.so
lrwxrwxrwx 1 root root 12 Oct 6 14:06 /usr/lib/libpq.so ->
libpq.so.5.1
# ll /usr/lib/libpq.so.5
lrwxrwxrwx 1 root root 12 Oct 6 14:05 /usr/lib/libpq.so.5 ->
libpq.so.5.1

# file /usr/lib/libpq.so.5.1
/usr/lib/libpq.so.5.1: ELF 32-bit LSB shared object, Intel 80386,
version 1 (SYSV), stripped
#

............................................

I assume that something is mixed here (=32/64-bit) because linker claims
for incompatibility - but because there is only 1 libpq created by
Postgres install, I'm a bit lost.
Should we use some other linker version ?

Any ideas how to proceed ?

Best Regards,
Tapio

#2Laurenz Albe
laurenz.albe@cybertec.at
In reply to: Noname (#1)
Re: DBD::Pg 2.10.7 compile failed on RH4

Tapio.Niva wrote:

we have 32-bit PostgreSQL version 8.3.4 on 64-bit RHEL4 , Postgres
itself is working as expected.
We are using PostreSQL via following perl version
............................................
# perl -v
This is perl, v5.10.0 built for i686-linux-thread-multi
(with 4 registered patches, see perl -V for more detail)
Copyright 1987-2007, Larry Wall
Binary build 1004 [287188] provided by ActiveState
http://www.ActiveState.com
Built Sep 3 2008 11:22:08
............................................

Our problem is that DBD::Pg version 2.10.7 will not compile ,
/usr/bin/ld skips all libpq files as incompatible - please see a slice
of the result below :
............................................
rm -f blib/arch/auto/DBD/Pg/Pg.so
LD_RUN_PATH="/usr/lib" gcc -shared -O2 Pg.o dbdimp.o quote.o types.o
-o blib/arch/auto/DBD/Pg/Pg.so \
-L/usr/lib -lpq -lm \

/usr/bin/ld: skipping incompatible /usr/lib/libpq.so when searching for
-lpq

[...]

# file /usr/lib/libpq.so.5.1
/usr/lib/libpq.so.5.1: ELF 32-bit LSB shared object, Intel 80386,
version 1 (SYSV), stripped
#

............................................

I assume that something is mixed here (=32/64-bit) because linker claims
for incompatibility - but because there is only 1 libpq created by
Postgres install, I'm a bit lost.
Should we use some other linker version ?

Any ideas how to proceed ?

Yes, the problem must be that the compiler produces 64-bit code
which cannot be linked with 32-bit code.

You can either install 64-bit PostgreSQL libraries or give
gcc the -m32 option so that it generates 32-bit code.

Yours,
Laurenz Albe

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Noname (#1)
Re: DBD::Pg 2.10.7 compile failed on RH4

<Tapio.Niva@tietoenator.com> writes:

we have 32-bit PostgreSQL version 8.3.4 on 64-bit RHEL4 , Postgres
itself is working as expected.
...
Our problem is that DBD::Pg version 2.10.7 will not compile ,

LD_RUN_PATH="/usr/lib" gcc -shared -O2 Pg.o dbdimp.o quote.o types.o
-o blib/arch/auto/DBD/Pg/Pg.so \
-L/usr/lib -lpq -lm \
/usr/bin/ld: skipping incompatible /usr/lib/libpq.so when searching for
-lpq

What it looks like to me is that you've got a 64-bit perl build ("file"
on the perl executable would be a good way to confirm that). If so,
you're going to need a 64-bit version of libpq.so to link into it.

There's no reason a 64-bit libpq wouldn't interoperate with a 32-bit
server, so just installing the 64-bit postgresql-libs RPM alongside what
you have ought to be sufficient.

regards, tom lane

#4Noname
Tapio.Niva@tietoenator.com
In reply to: Laurenz Albe (#2)
Re: DBD::Pg 2.10.7 compile failed on RH4

Hello,
thanks for help, -m32 option to Makefile and make was successful, so was
also make test & make install.
Our own tests are connecting to postgres - at least so far.

Tom,we are using 32-bit perl & 32-bit postgres on 64-bit RHEL4, because
some of our sw still are 32-bit.
DBD::Pg is the latest version 2.10.7 from CPAN.

Again, thanks for great help !

Have a nice day

BR, Tapio

-----Original Message-----
From: Albe Laurenz [mailto:laurenz.albe@wien.gv.at]
Sent: 7. lokakuuta 2008 15:04
To: Niva Tapio; pgsql-general@postgresql.org
Subject: RE: [GENERAL] DBD::Pg 2.10.7 compile failed on RH4

Tapio.Niva wrote:

we have 32-bit PostgreSQL version 8.3.4 on 64-bit RHEL4 , Postgres
itself is working as expected.
We are using PostreSQL via following perl version
............................................
# perl -v
This is perl, v5.10.0 built for i686-linux-thread-multi
(with 4 registered patches, see perl -V for more detail)
Copyright 1987-2007, Larry Wall
Binary build 1004 [287188] provided by ActiveState
http://www.ActiveState.com
Built Sep 3 2008 11:22:08
............................................

Our problem is that DBD::Pg version 2.10.7 will not compile ,
/usr/bin/ld skips all libpq files as incompatible - please see a slice
of the result below :
............................................
rm -f blib/arch/auto/DBD/Pg/Pg.so
LD_RUN_PATH="/usr/lib" gcc -shared -O2 Pg.o dbdimp.o quote.o types.o
-o blib/arch/auto/DBD/Pg/Pg.so \
-L/usr/lib -lpq -lm \

/usr/bin/ld: skipping incompatible /usr/lib/libpq.so when searching

for

-lpq

[...]

# file /usr/lib/libpq.so.5.1
/usr/lib/libpq.so.5.1: ELF 32-bit LSB shared object, Intel 80386,
version 1 (SYSV), stripped
#

............................................

I assume that something is mixed here (=32/64-bit) because linker

claims

for incompatibility - but because there is only 1 libpq created by
Postgres install, I'm a bit lost.
Should we use some other linker version ?

Any ideas how to proceed ?

Yes, the problem must be that the compiler produces 64-bit code
which cannot be linked with 32-bit code.

You can either install 64-bit PostgreSQL libraries or give
gcc the -m32 option so that it generates 32-bit code.

Yours,
Laurenz Albe