Dear all,
I cannot compile PL/Perl and PL/Python under x86_64. I'm running
Intel Pentium D 3.2GHz Dual-core, Debian GNU/Linux AMD64 port, kernel
2.6.16.14, gcc 3.4.4, glibc 2.3.2, perl 5.8.8, Python 2.4.3.
imacat@yuki ~ % uname -a
Linux yuki 2.6.16.14-allmods #1 SMP Sat May 6 18:25:11 CST 2006 x86_64 GNU/Linux
To complie PL/Perl:
imacat@yuki /tmp/postgresql-8.1.3 % ./configure --prefix=/usr
--sysconfdir=/etc --localstatedir=/var --mandir=/usr/share/man
--enable-nls --with-docdir=/usr/sha re/doc/postgresql --with-perl
--with-pam
checking build system type... x86_64-unknown-linux-gnu
...
config.status: linking ./src/makefiles/Makefile.linux to
src/Makefile.port
imacat@yuki /tmp/postgresql-8.1.3 % make
make -C doc all
...
tsort: -: input contains a loop:
tsort: SPI.o
tsort: plperl.o
ranlib libplperl.a
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Winline
-Wdeclaration-after- statement -Wendif-labels -fno-strict-aliasing -fpic
-shared -Wl,-soname,libplper l.so.0 plperl.o spi_internal.o SPI.o
-L/usr/local/lib -L/usr/lib/perl5/5.8.8/x8
6_64-linux-thread-multi-ld/CORE -L../../../src/port
/usr/lib/perl5/5.8.8/x86_64-
linux-thread-multi-ld/auto/DynaLoader/DynaLoader.a -lperl -lnsl -ldl -lm
-lcrypt -lutil -lpthread -lc
-Wl,-rpath,/usr/lib/perl5/5.8.8/x86_64-linux-thread-multi- ld/CORE -o
libplperl.so.0.0
/usr/bin/ld:
/usr/lib/perl5/5.8.8/x86_64-linux-thread-multi-ld/auto/DynaLoader/D
ynaLoader.a(DynaLoader.o): relocation R_X86_64_32 can not be used when
making a shared object; recompile with -fPIC
/usr/lib/perl5/5.8.8/x86_64-linux-thread-multi-ld/auto/DynaLoader/DynaLoader.a:
could not read symbols: Bad value
collect2: ld returned 1 exit status
make[3]: *** [libplperl.so.0.0] Error 1
make[3]: Leaving directory `/tmp/postgresql-8.1.3/src/pl/plperl'
make[2]: *** [all] Error 1
make[2]: Leaving directory `/tmp/postgresql-8.1.3/src/pl'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/tmp/postgresql-8.1.3/src'
make: *** [all] Error 2
imacat@yuki /tmp/postgresql-8.1.3 %
The same goes for PL/Python:
imacat@yuki /tmp/postgresql-8.1.3 % ./configure --prefix=/usr
--sysconfdir=/etc --localstatedir=/var --mandir=/usr/share/man
--enable-nls --with-docdir=/usr/share/doc/postgresql --with-python
--with-pam
checking build system type... x86_64-unknown-linux-gnu
...
config.status: linking ./src/makefiles/Makefile.linux to
src/Makefile.port
imacat@yuki /tmp/postgresql-8.1.3 % make
make -C doc all
...
make[3]: Entering directory `/tmp/postgresql-8.1.3/src/pl/plpython'
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Winline
-Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing -fpic
-I. -I/usr/include/python2.4 -I../../../src/include -D_GNU_SOURCE -c
-o plpython.o plpython.c
ar crs libplpython.a `lorder plpython.o | tsort`
ranlib libplpython.a
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Winline
-Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing -fpic
-shared -Wl,-soname,libplpython.so.0 plpython.o
-L/usr/lib/python2.4/config -L../../../src/port -lpython2.4 -lpthread
-ldl -lutil -lm -Wl,-rpath,/usr/lib/python2.4/config -o
libplpython.so.0.0
/usr/bin/ld: /usr/lib/python2.4/config/libpython2.4.a(abstract.o):
relocation R_X86_64_32 can not be used when making a shared object;
recompile with -fPIC
/usr/lib/python2.4/config/libpython2.4.a: could not read symbols: Bad
value
collect2: ld returned 1 exit status
make[3]: *** [libplpython.so.0.0] Error 1
make[3]: Leaving directory `/tmp/postgresql-8.1.3/src/pl/plpython'
make[2]: *** [all] Error 1
make[2]: Leaving directory `/tmp/postgresql-8.1.3/src/pl'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/tmp/postgresql-8.1.3/src'
make: *** [all] Error 2
imacat@yuki /tmp/postgresql-8.1.3 %
I have recompiled my perl many times, with:
./Configure -Dusethreads -Dcc=gcc -Duselongdouble -Doptimize="-g -O3"
-Duse64bitint -Duse64bitall -Dprefix=/usr -Dd_dosuid
-Dotherlibdirs=/usr/share/perl5 -Dinc_version_list=none
-Acccdlflags=-fPIC -Duseshrplib=false
-Dcf_email=imacat@mail.imacat.idv.tw
I've changed CFLAGS_SL to -fPIC in src/makefiles/Makefile.linux, and
it still doesn't help.
...
tsort: plperl.o
ranlib libplperl.a
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Winline
-Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing -fPIC
-shared -Wl,-soname,libplperl.so.0 plperl.o spi_internal.o SPI.o
-L/usr/local/lib
-L/usr/lib/perl5/5.8.8/x86_64-linux-thread-multi-ld/CORE
-L../../../src/port /usr/lib/perl5/5.8.8/x86_64-linux-thread-multi-ld/au
to/DynaLoader/DynaLoader.a -lperl -lnsl -ldl -lm -lcrypt -lutil
-lpthread -lc
-Wl,-rpath,/usr/lib/perl5/5.8.8/x86_64-linux-thread-multi-ld/CORE -o
libplperl.so.0.0
/usr/bin/ld: /usr/lib/perl5/5.8.8/x86_64-linux-thread-multi-ld/auto/Dyn
aLoader/DynaLoader.a(DynaLoader.o): relocation R_X86_64_32 can not be
used when making a shared object; recompile with -fPIC
/usr/lib/perl5/5.8.8/x86_64-linux-thread-multi-ld/auto/DynaLoader/DynaLoader.a:
could not read symbols: Bad value
collect2: ld returned 1 exit status
make[3]: *** [libplperl.so.0.0] Error 1
...
...
make[3]: Entering directory `/tmp/postgresql-8.1.3/src/pl/plpython'
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Winline
-Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing -fPIC
-shared -Wl,-soname,libplpython.so.0 plpython.o
-L/usr/lib/python2.4/config -L../../../src/port -lpython2.4 -lpthread
-ldl -lutil -lm -Wl,-rpath,/usr/lib/python2.4/config -o
libplpython.so.0.0
/usr/bin/ld: /usr/lib/python2.4/config/libpython2.4.a(abstract.o):
relocation R_X86_64_32 can not be used when making a shared object;
recompile with -fPIC
/usr/lib/python2.4/config/libpython2.4.a: could not read symbols: Bad
value
collect2: ld returned 1 exit status
make[3]: *** [libplpython.so.0.0] Error 1
...
I'm out of ideas. Is there anyone know which flags to add to or
where my mistake is? Thank you.
--
Best regards,
imacat ^_*' <imacat@mail.imacat.idv.tw>
PGP Key: http://www.imacat.idv.tw/me/pgpkey.txt
<<Woman's Voice>> News: http://www.wov.idv.tw/
Tavern IMACAT's: http://www.imacat.idv.tw/
TLUG List Manager: http://lists.linux.org.tw/cgi-bin/mailman/listinfo/tlug