Cyrus 2.1.13 and cygwin?

Evan Easton evan at eeaston.com
Sat May 31 15:02:08 EDT 2003


Does anyone know if cyrus can be built and run on cygwin in W2K or XP?  Not
seeing any indication that others are doing it, I decided to try?  I managed
to build and install cyrus-sasl-2.1.13 into /usr, but configure of imapd
(2.1.13) is failing.

   ./configure --prefix=/usr -with-bdb-incdir=/usr/include/db3.1
--with-sasl=/usr/include/sasl

fails with:
   ...
   checking for crypt in -lcrypt... yes
   checking for sasl/sasl.h... yes
   checking for sasl/saslutil.h... yes
   checking for prop_get in -lsasl2... no
   configure: error: Cannot continue without libsasl2.
   Get it from ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/.

Tail of the config.log is below the sig.  I noticed it contained a log of
"undefined reference to _gdbm_..." messages.

I didn't have gdbm.  I grabbed 1.8.3 sources and built it (gcc 3.2.3).  This
build gives me:
   /usr/bin/cyggdbm-3.dll
   /usr/bin/cyggdbm.dll
   /usr/bin/cyggdbm_compat-3.dll
   /usr/bin/testgdbm.exe	
   /usr/include/gdbm.h
   /usr/lib/libgdbm.a
   /usr/lib/libgdbm.dll.a
   /usr/lib/libgdbm.la
   /usr/lib/libgdbm_compat.a
   /usr/lib/libgdbm_compat.dll.a
   /usr/lib/libgdbm_compat.la

The include file contains exports for all unfound APIs but without the _
prefix. E.g.
   extern GDBM_FILE gdbm_open __P((char *, int, int, int, void (*)()));
   extern void gdbm_close __P((GDBM_FILE));
   extern int gdbm_store __P((GDBM_FILE, datum, datum, int));
   ...

My C skills have waned over the past years.  So I don't remember all the
export naming issues.

Are these exports declared wrong (without the _ prefix, sasldb/db_gdbm.c
doesn't include it)? Have I built gdbm wrong?  Need special linking options?
Or will cyrus not build on cygwin?

Evan

----------- config.log tail -----------
/usr/lib/gcc-lib/i686-pc-cygwin/3.2/../../../libsasl2.a(db_gdbm.o)(.text+0x7
ac):/cygdrive/d/Programs/cyrus-sasl-2.1.13/sasldb/db_gdbm.c:203: undefined
reference to `_gdbm_errno'
/usr/lib/gcc-lib/i686-pc-cygwin/3.2/../../../libsasl2.a(db_gdbm.o)(.text+0x7
e1):/cygdrive/d/Programs/cyrus-sasl-2.1.13/sasldb/db_gdbm.c:209: undefined
reference to `_gdbm_delete'
/usr/lib/gcc-lib/i686-pc-cygwin/3.2/../../../libsasl2.a(db_gdbm.o)(.text+0x8
09):/cygdrive/d/Programs/cyrus-sasl-2.1.13/sasldb/db_gdbm.c:210: undefined
reference to `_gdbm_errno'
/usr/lib/gcc-lib/i686-pc-cygwin/3.2/../../../libsasl2.a(db_gdbm.o)(.text+0x8
5b):/cygdrive/d/Programs/cyrus-sasl-2.1.13/sasldb/db_gdbm.c:190: undefined
reference to `_gdbm_errno'
/usr/lib/gcc-lib/i686-pc-cygwin/3.2/../../../libsasl2.a(db_gdbm.o)(.text+0xb
7b): In function `_sasldb_getkeyhandle':
/cygdrive/d/Programs/cyrus-sasl-2.1.13/sasldb/db_gdbm.c:298: undefined
reference to `_gdbm_open'
/usr/lib/gcc-lib/i686-pc-cygwin/3.2/../../../libsasl2.a(db_gdbm.o)(.text+0xb
be):/cygdrive/d/Programs/cyrus-sasl-2.1.13/sasldb/db_gdbm.c:309: undefined
reference to `_gdbm_close'
/usr/lib/gcc-lib/i686-pc-cygwin/3.2/../../../libsasl2.a(db_gdbm.o)(.text+0xb
e2):/cygdrive/d/Programs/cyrus-sasl-2.1.13/sasldb/db_gdbm.c:301: undefined
reference to `_gdbm_errno'
/usr/lib/gcc-lib/i686-pc-cygwin/3.2/../../../libsasl2.a(db_gdbm.o)(.text+0xc
9d): In function `_sasldb_getnextkey':
/cygdrive/d/Programs/cyrus-sasl-2.1.13/sasldb/db_gdbm.c:330: undefined
reference to `_gdbm_firstkey'
/usr/lib/gcc-lib/i686-pc-cygwin/3.2/../../../libsasl2.a(db_gdbm.o)(.text+0xd
04):/cygdrive/d/Programs/cyrus-sasl-2.1.13/sasldb/db_gdbm.c:333: undefined
reference to `_gdbm_nextkey'
/usr/lib/gcc-lib/i686-pc-cygwin/3.2/../../../libsasl2.a(db_gdbm.o)(.text+0xd
54): In function `_sasldb_releasekeyhandle':
/cygdrive/d/Programs/cyrus-sasl-2.1.13/sasldb/db_gdbm.c:361: undefined
reference to `_gdbm_close'
collect2: ld returned 1 exit status
configure: failed program was:
#line 6437 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error.  */
/* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
char prop_get();

int main() {
prop_get()
; return 0; }






More information about the Info-cyrus mailing list