Thread: Build failure on Mac OS X 10.3.9
Hi, I am trying to use the Mac OS X installation package of PostgreSQL 8.1. The database could be installed and I could basically use my old psqlODBC driver (07.03.0200). Trying to compile the odbc driver 08.02.0200 gives me these errors ? ./configure --with-unixodbc ... gcc -DHAVE_CONFIG_H -I. -I. -I. -I/sw/include/postgresql -g -O2 -MT results.lo -MD -MP -MF .deps/results.Tpo -c results.c -fno-common -DPIC -o .libs/results.o if /bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I. -I/sw/include/postgresql -g -O2 -MT socket.lo -MD -MP -MF ".deps/socket.Tpo" -c -o socket.lo socket.c; \ then mv -f ".deps/socket.Tpo" ".deps/socket.Plo"; else rm -f ".deps/socket.Tpo"; exit 1; fi gcc -DHAVE_CONFIG_H -I. -I. -I. -I/sw/include/postgresql -g -O2 -MT socket.lo -MD -MP -MF .deps/socket.Tpo -c socket.c -fno-common -DPIC -o .libs/socket.o socket.c: In function `SOCK_connect_to': socket.c:310: error: storage size of `tm' isn't known socket.c: In function `SOCK_wait_for_ready': socket.c:422: error: storage size of `tm' isn't known make[1]: *** [socket.lo] Error 1 make: *** [all] Error 2 lothars-Computer:~/psqlodbc-08.02.0200 lothar$ What is wrong ? Thanks, Lothar
lothar.behrens@lollisoft.de wrote: > Hi, > > I am trying to use the Mac OS X installation package of PostgreSQL 8.1. > The database could be installed > and I could basically use my old psqlODBC driver (07.03.0200). > > Trying to compile the odbc driver 08.02.0200 gives me these errors ? > > ./configure --with-unixodbc > ... > > gcc -DHAVE_CONFIG_H -I. -I. -I. -I/sw/include/postgresql -g -O2 -MT > results.lo -MD -MP -MF .deps/results.Tpo -c results.c -fno-common > -DPIC -o .libs/results.o > if /bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. > -I. -I. -I/sw/include/postgresql -g -O2 -MT socket.lo -MD -MP -MF > ".deps/socket.Tpo" -c -o socket.lo socket.c; \ > then mv -f ".deps/socket.Tpo" ".deps/socket.Plo"; else rm -f > ".deps/socket.Tpo"; exit 1; fi > gcc -DHAVE_CONFIG_H -I. -I. -I. -I/sw/include/postgresql -g -O2 -MT > socket.lo -MD -MP -MF .deps/socket.Tpo -c socket.c -fno-common -DPIC > -o .libs/socket.o > socket.c: In function `SOCK_connect_to': > socket.c:310: error: storage size of `tm' isn't known > socket.c: In function `SOCK_wait_for_ready': > socket.c:422: error: storage size of `tm' isn't known > make[1]: *** [socket.lo] Error 1 > make: *** [all] Error 2 > lothars-Computer:~/psqlodbc-08.02.0200 lothar$ > > What is wrong ? Could you try the following patch ? *** socket.c.orig Tue Oct 24 00:16:47 2006 --- socket.c Sat Dec 23 19:36:39 2006 *************** *** 24,29 **** --- 24,30 ---- #include <string.h> /* for memset */ #if defined(TM_IN_SYS_TIME) #include <sys/time.h> + #include <time.h> #else #include <time.h> #endif /* defined(TM_IN_SYS_TIME) */ regards, Hiroshi Inoue *** socket.c.orig Tue Oct 24 00:16:47 2006 --- socket.c Sat Dec 23 19:36:39 2006 *************** *** 24,29 **** --- 24,30 ---- #include <string.h> /* for memset */ #if defined(TM_IN_SYS_TIME) #include <sys/time.h> + #include <time.h> #else #include <time.h> #endif /* defined(TM_IN_SYS_TIME) */
> *** socket.c.orig Tue Oct 24 00:16:47 2006 > --- socket.c Sat Dec 23 19:36:39 2006 > *************** > *** 24,29 **** > --- 24,30 ---- > #include <string.h> /* for memset */ > #if defined(TM_IN_SYS_TIME) > #include <sys/time.h> > + #include <time.h> > #else Here should be the line (after the above else line) #include <sys/time.h> > #include <time.h> > #endif /* defined(TM_IN_SYS_TIME) */ > Now I have another error: After an error by indirectly linking to libssl I have added -lssl to the makefile. Then I get this error: ld: Undefined symbols: _CONNLOCK_ACQUIRE _CONNLOCK_RELEASE _INIT_CONNLOCK Where are these functions ? Thanks, Lothar
lothar.behrens@lollisoft.de wrote: >> *** socket.c.orig Tue Oct 24 00:16:47 2006 >> --- socket.c Sat Dec 23 19:36:39 2006 >> *************** >> *** 24,29 **** >> --- 24,30 ---- >> #include <string.h> /* for memset */ >> #if defined(TM_IN_SYS_TIME) >> #include <sys/time.h> >> + #include <time.h> >> #else >> > > Here should be the line (after the above else line) > > #include <sys/time.h> > > >> #include <time.h> >> #endif /* defined(TM_IN_SYS_TIME) */ >> >> > > Now I have another error: > > After an error by indirectly linking to libssl I have added -lssl to > the makefile. Then I get this error: > > ld: Undefined symbols: > _CONNLOCK_ACQUIRE > _CONNLOCK_RELEASE > _INIT_CONNLOCK > > Where are these functions ? > It is already fixed in the current CVS. Please apply the following patch . =================================================================== RCS file: /cvsroot/psqlodbc/psqlodbc/connection.h,v retrieving revision 1.79 retrieving revision 1.80 diff -u -p -r1.79 -r1.80 --- psqlodbc/psqlodbc/connection.h 2006/10/31 12:21:28 1.79 +++ psqlodbc/psqlodbc/connection.h 2006/11/03 10:41:19 1.80 @@ -173,8 +173,10 @@ do { \ #define INIT_CONNLOCK(x) #define TRY_ENTER_CONN_CS(x) #define ENTER_CONN_CS(x) -#define ENTER_INNER_CONN_CS(x, entered) (0) +#define CONNLOCK_ACQUIRE(x) +#define ENTER_INNER_CONN_CS(x, entered) #define LEAVE_CONN_CS(x) +#define CONNLOCK_RELEASE(x) #define DELETE_CONN_CS(x) #define DELETE_CONNLOCK(x) #endif /* WIN_MULTITHREAD_SUPPORT */