[postgis-users] PostGIS Installation Problems

Shaw, William Ross wshaw at neo.tamu.edu
Mon Apr 7 10:56:34 PDT 2003


I am trying to use PostGIS 0.7.4 with Cygwin 1.3.22 and Pgsql 7.3.2.  I am 
using the binary and source for Pqsql that came with the Cygwin install.  I 
am having trouble making the file.  I have been following along with the 
email list trying everything, but nothing seems to work for me.  I modified 
my postgis make file like this as many people seemed to recommend:

*********************************************************************

# Add libraries that libpq depends (or might depend) on into the
# shared library link.  (The order in which you list them here doesn't
# matter.)
#SHLIB_LINK=$(filter -L%, $(LDFLAGS)) 
ifeq ($(USE_PROJ),1)
	SHLIB_LINK=$(filter -L%, $(LDFLAGS)) -L$(PROJ_DIR)/lib -lproj 
else
	SHLIB_LINK=$(filter -L%, $(LDFLAGS)) ../../src/backend/libpostgres.a
endif

*********************************************************************

Doing so returned the following error message when compiled:

*********************************************************************
..
postgis_transform.c: In function `transform_geom':
postgis_transform.c:437: warning: control reaches end of non-void function
gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations  -g -I. -
I../../src/in
clude  -DFRONTEND -DSYSCONFDIR='"/etc/postgresql"' -DUSE_VERSION=73  -c -o 
postg
is_gist_72.o postgis_gist_72.c
gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations  -g -I. -
I../../src/in
clude  -DFRONTEND -DSYSCONFDIR='"/etc/postgresql"' -DUSE_VERSION=73  -c -o 
postg
is_estimate.o postgis_estimate.c
dlltool --export-all --output-def postgis.def postgis_debug.o postgis_ops.o 
post
gis_fn.o postgis_inout.o postgis_proj.o postgis_chip.o postgis_transform.o 
postg
is_gist_72.o postgis_estimate.o
dllwrap -o postgis.dll --dllname postgis.dll --def postgis.def 
postgis_debug.o p
ostgis_ops.o postgis_fn.o postgis_inout.o postgis_proj.o postgis_chip.o 
postgis_
transform.o postgis_gist_72.o postgis_estimate.o ../../src/utils/dllinit.o -
L/us
r/local/lib -L/usr/local/lib ../../src/backend/libpostgres.a
fu000001.o(.idata$3+0xc): undefined reference to `_libpostgres_a_iname'
nmth000000.o(.idata$4+0x0): undefined reference to 
`__nm__cpu_index_tuple_cost'
Info: resolving _cpu_index_tuple_cost by linking to 
__imp__cpu_index_tuple_cost
(auto-import)
collect2: ld returned 1 exit status
dllwrap: gcc exited with status 1
make: *** [libpostgis.a] Error 1

**********************************************************************
So I tried another modification to my make file that was suggested in the 
email archives:

**********************************************************************

# Select proper GiST support C file
#
ifeq ($(USE_VERSION),71) 
	GIST_SUPPORT=71
	GIST_ESTIMATE=
else
	GIST_SUPPORT=72
	GIST_ESTIMATE=#postgis_estimate.o
endif

OBJS=postgis_debug.o postgis_ops.o postgis_fn.o postgis_inout.o 
postgis_proj.o postgis_chip.o postgis_transform.o 
postgis_gist_$(GIST_SUPPORT).o $(GIST_ESTIMATE)

**********************************************************************

I was then able to compile this file, but when I tried to use the 
postgis.sql file I got as error saying it couldn't find function 
postgis_gist_sel in postgis.dll. The only other modification in the archives 
is to add DLLIMPORT to the cost.h file.  After I modified the file, I did a 
make clean, and make of pgsql, and got the following compilation error:

***********************************************************************

In file included from pg_aggregate.c:25:
./../../src/include/optimizer/cost.h:38: syntax error before "double"
make[3]: *** [pg_aggregate.o] Error 1
make[3]: Leaving directory `/usr/src/postgresql-7.3.2-1/src/backend/catalog'
make[2]: *** [catalog-recursive] Error 2
make[2]: Leaving directory `/usr/src/postgresql-7.3.2-1/src/backend'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/usr/src/postgresql-7.3.2-1/src'
make: *** [all] Error 2

***********************************************************************

Now being that this is a syntax error, I am assuming that gcc is not 
recognizing the DLLIMPORT.  Is there something else that I need to have 
installed?  When I installed Cygwin, I selected everything, so I don't know 
what else it could be.  Any help would be greatly appreciated.  I also 
included my postgis make file below.

Thanks in advance for you help.

Will Shaw

**********************************************************************
Make File
**********************************************************************
# Configuration Directives

#---------------------------------------------------------------
# Set USE_PROJ to 1 for Proj4 reprojection support
#
USE_PROJ=0
PROJ_DIR=/usr/local

#---------------------------------------------------------------
# Set USE_STATS to 1 for new GiST statistics collection support
# Note that this support requires additional columns in 
# GEOMETRY_COLUMNS, so see the list archives for info or
# install a fresh database using postgis.sql
#
USE_STATS=0

#---------------------------------------------------------------
subdir=contrib/postgis

#---------------------------------------------------------------
# Default the root of the PostgreSQL source tree 
# To use a non-standard location set the PGSQL_SRC environment
# variable to the appropriate location.
#
ifeq (${PGSQL_SRC},) 
	top_builddir = ../..
	include $(top_builddir)/src/Makefile.global
	LPATH := $$libdir
else
	top_builddir = ${PGSQL_SRC}
	include $(top_builddir)/src/Makefile.global
	LPATH := ${PWD}
endif

#---------------------------------------------------------------
# Test the version string and set the USE_VERSION macro
# appropriately.
#
ifneq ($(findstring 7.1,$(VERSION)),)
	USE_VERSION=71
else
	ifneq ($(findstring 7.2,$(VERSION)),)
		USE_VERSION=72
	else
		USE_VERSION=73
	endif
endif

#---------------------------------------------------------------
# Regression test temporary database.
#
TEST_DB=geom_regress

#---------------------------------------------------------------
# Shared library parameters.
#
NAME=postgis
SO_MAJOR_VERSION=0
SO_MINOR_VERSION=7

#---------------------------------------------------------------
# override CPPFLAGS := -I$(srcdir) $(CPPFLAGS)
# Altered for Cynwin
ifeq ($(USE_PROJ),1)
	override CPPFLAGS := -g -I$(PROJ_DIR)/include -I$(srcdir) 
$(CPPFLAGS) -DFRONTEND -DSYSCONFDIR='"$(sysconfdir)"' -DUSE_PROJ -
DUSE_VERSION=$(USE_VERSION)
else
	override CPPFLAGS := -g -I$(srcdir) $(CPPFLAGS) -DFRONTEND -
DSYSCONFDIR='"$(sysconfdir)"' -DUSE_VERSION=$(USE_VERSION)
endif
override DLLLIBS := $(BE_DLLLIBS) $(DLLLIBS)

#---------------------------------------------------------------
# Add index selectivity to C flags
#
ifeq ($(USE_STATS),1)
	override CPPFLAGS += -DUSE_STATS
endif
 
#---------------------------------------------------------------
# Select proper GiST support C file
#
ifeq ($(USE_VERSION),71) 
	GIST_SUPPORT=71
	GIST_ESTIMATE=
else
	GIST_SUPPORT=72
	GIST_ESTIMATE=postgis_estimate.o
endif

OBJS=postgis_debug.o postgis_ops.o postgis_fn.o postgis_inout.o 
postgis_proj.o postgis_chip.o postgis_transform.o 
postgis_gist_$(GIST_SUPPORT).o $(GIST_ESTIMATE)

#---------------------------------------------------------------
# Add libraries that libpq depends (or might depend) on into the
# shared library link.  (The order in which you list them here doesn't
# matter.)
#SHLIB_LINK=$(filter -L%, $(LDFLAGS)) 
ifeq ($(USE_PROJ),1)
	SHLIB_LINK=$(filter -L%, $(LDFLAGS)) -L$(PROJ_DIR)/lib -lproj 
else
	SHLIB_LINK=$(filter -L%, $(LDFLAGS)) ../../src/backend/libpostgres.a
endif

#---------------------------------------------------------------
# Makefile targets

all: all-lib $(NAME).sql $(NAME).sql $(NAME)_undef.sql loaderdumper

loaderdumper:
	$(MAKE) -C loader

# Shared library stuff
include $(top_srcdir)/src/Makefile.shlib

$(NAME).sql: $(NAME)_sql_common.sql.in $(NAME)_sql_$(USE_VERSION)_end.sql.in 
$(NAME)_sql_$(USE_VERSION)_start.sql.in 
	cat $(NAME)_sql_$(USE_VERSION)_start.sql.in $(NAME)
_sql_common.sql.in $(NAME)_sql_$(USE_VERSION)_end.sql.in | sed -
e 's:@MODULE_FILENAME@:$(LPATH)/
$(shlib):g;s:@POSTGIS_VERSION@:$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION):g'  > 
$@ 

$(NAME)_undef.sql: $(NAME).sql create_undef.pl
	perl create_undef.pl $< $(USE_VERSION) > $@ 

install: all installdirs install-lib
	$(INSTALL_DATA) $(srcdir)/README.$(NAME)  $(docdir)/contrib
	$(INSTALL_DATA) $(NAME).sql $(datadir)/contrib
	$(INSTALL_DATA) $(NAME)_undef.sql $(datadir)/contrib
	$(INSTALL_DATA) spatial_ref_sys.sql $(datadir)/contrib
	$(INSTALL_DATA) README.postgis $(datadir)/contrib
	$(MAKE) -C loader install

installdirs:
	$(mkinstalldirs) $(docdir)/contrib $(datadir)/contrib $(libdir)

uninstall: uninstall-lib
	@rm -f $(docdir)/contrib/README.$(NAME) $(datadir)/contrib/
$(NAME).sql

clean distclean maintainer-clean: clean-lib
	@rm -f $(OBJS) $(NAME).sql $(NAME)_undef.sql
	$(MAKE) -C loader clean

test: all
	csh regress/regress.csh $(TEST_DB)





More information about the postgis-users mailing list