Compiling tsearch2 on AIX
I am trying to compile PostgreSQL 8.0.3/tsearch2 contrib module on AIX 5.2 ML 3
gcc version 3.3.2
GNU Make 3.80
bash-2.05b# gmake
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wendif-labels
-fno-strict-aliasing -I./snowball -I./ispell -I./wordparser -I.
-I../../src/include -c -o dict_ex.o dict_ex.c
In file included from ../../src/include/c.h:64,
from ../../src/include/postgres.h:48,
from dict_ex.c:9:
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/include/stdio.h:484:
error: conflicting types for `fgetpos64'
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/include/stdio.h:310:
error: previous declaration of `fgetpos64'
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/include/stdio.h:487:
error: conflicting types for `fseeko64'
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/include/stdio.h:430:
error: previous declaration of `fseeko64'
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/include/stdio.h:488:
error: conflicting types for `fsetpos64'
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/include/stdio.h:312:
error: previous declaration of `fsetpos64'
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/include/stdio.h:489:
error: conflicting types for `ftello64'
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/include/stdio.h:431:
error: previous declaration of `ftello64'
gmake: *** [dict_ex.o] Error 1
Can someone please let me know why this is happening?
Mag Gam <magawake@gmail.com> writes:
I am trying to compile PostgreSQL 8.0.3/tsearch2 contrib module on AIX 5.2 ML 3
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/include/stdio.h:484:
error: conflicting types for `fgetpos64'
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/include/stdio.h:310:
error: previous declaration of `fgetpos64'
I'm just guessing, but this smells to me like a problem with largefile-
vs-not-largefile support. We discovered long ago that when pg_config.h
defines _FILE_OFFSET_BITS or _LARGEFILE_SOURCE, it's critical that the
compiler see that *before* it includes stdio.h. Unfortunately it seems
this hard-won knowledge didn't get propagated into tsearch2 until just
recently :-(. Try applying the tsearch2 changes linked here:
http://archives.postgresql.org/pgsql-committers/2005-05/msg00068.php
and let us know if that helps. I have not back-patched these changes
into existing release branches, but if it turns out to address a real
problem-seen-in-the-field then that should get done ...
regards, tom lane
Thanks for the reply Tom!
I managed to get the cvs version and I made more progress compiling tsearch2
Here is where it errors out.
touch libtsearch2.a
../../src/backend/port/aix/mkldexport.sh libtsearch2.a > libtsearch2.exp
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wendif-labels
-fno-strict-aliasing -Wl,-bnoentry -Wl,-H512 -Wl,-bM:SRE -o
libtsearch2.so libtsearch2.a -L../../src/port -L../../src/port -lm
-Wl,-bI:../../src/backend/postgres.imp -Wl,-bE:libtsearch2.exp
ld: 0711-317 ERROR: Undefined symbol: .get_share_path
ld: 0711-317 ERROR: Undefined symbol: .pg_strncasecmp
ld: 0711-317 ERROR: Undefined symbol: .pg_strcasecmp
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
collect2: ld returned 8 exit status
gmake: *** [libtsearch2.so] Error 1
Any ideas?
TIA
Show quoted text
On 5/17/05, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Mag Gam <magawake@gmail.com> writes:
I am trying to compile PostgreSQL 8.0.3/tsearch2 contrib module on AIX 5.2 ML 3
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/include/stdio.h:484:
error: conflicting types for `fgetpos64'
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/include/stdio.h:310:
error: previous declaration of `fgetpos64'I'm just guessing, but this smells to me like a problem with largefile-
vs-not-largefile support. We discovered long ago that when pg_config.h
defines _FILE_OFFSET_BITS or _LARGEFILE_SOURCE, it's critical that the
compiler see that *before* it includes stdio.h. Unfortunately it seems
this hard-won knowledge didn't get propagated into tsearch2 until just
recently :-(. Try applying the tsearch2 changes linked here:
http://archives.postgresql.org/pgsql-committers/2005-05/msg00068.php
and let us know if that helps. I have not back-patched these changes
into existing release branches, but if it turns out to address a real
problem-seen-in-the-field then that should get done ...regards, tom lane
Tom:
Got it working!
I had to modify this line in the tsearch2 Makefile
from
SHLIB_LINK := -lm
to
SHLIB_LINK := -lm -lpgport
it works like a charm!
thanks for your help!
Show quoted text
On 5/18/05, Mag Gam <magawake@gmail.com> wrote:
Thanks for the reply Tom!
I managed to get the cvs version and I made more progress compiling tsearch2
Here is where it errors out.
touch libtsearch2.a
../../src/backend/port/aix/mkldexport.sh libtsearch2.a > libtsearch2.exp
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wendif-labels
-fno-strict-aliasing -Wl,-bnoentry -Wl,-H512 -Wl,-bM:SRE -o
libtsearch2.so libtsearch2.a -L../../src/port -L../../src/port -lm
-Wl,-bI:../../src/backend/postgres.imp -Wl,-bE:libtsearch2.exp
ld: 0711-317 ERROR: Undefined symbol: .get_share_path
ld: 0711-317 ERROR: Undefined symbol: .pg_strncasecmp
ld: 0711-317 ERROR: Undefined symbol: .pg_strcasecmp
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
collect2: ld returned 8 exit status
gmake: *** [libtsearch2.so] Error 1Any ideas?
TIA
On 5/17/05, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Mag Gam <magawake@gmail.com> writes:
I am trying to compile PostgreSQL 8.0.3/tsearch2 contrib module on AIX 5.2 ML 3
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/include/stdio.h:484:
error: conflicting types for `fgetpos64'
/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/include/stdio.h:310:
error: previous declaration of `fgetpos64'I'm just guessing, but this smells to me like a problem with largefile-
vs-not-largefile support. We discovered long ago that when pg_config.h
defines _FILE_OFFSET_BITS or _LARGEFILE_SOURCE, it's critical that the
compiler see that *before* it includes stdio.h. Unfortunately it seems
this hard-won knowledge didn't get propagated into tsearch2 until just
recently :-(. Try applying the tsearch2 changes linked here:
http://archives.postgresql.org/pgsql-committers/2005-05/msg00068.php
and let us know if that helps. I have not back-patched these changes
into existing release branches, but if it turns out to address a real
problem-seen-in-the-field then that should get done ...regards, tom lane
Mag Gam <magawake@gmail.com> writes:
I had to modify this line in the tsearch2 Makefile
from
SHLIB_LINK := -lm
to
SHLIB_LINK := -lm -lpgport
Hmm, that's annoying. I was about to commit this change but it actively
fails on my machine:
/usr/ccs/bin/ld: DP relative code in file ../../src/port/libpgport.a(exec.o) - shared library must be position
independent. Use +z or +Z to recompile.
make: *** [libtsearch2.sl.0] Error 1
So we need to think harder. I wonder why the libpgport symbols aren't
getting picked up from the backend itself on your machine?
regards, tom lane