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