Обсуждение: 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 */