Subject: Re: Problems building Xemacs/i686-pc-cygwin
From: David Starks-Browning <[email-masked]>
To: "David A. Cobb" <[email-masked]>
Cc: [email-masked]
Date: Thu, 2 Aug 2001 16:37:49 +0100

On Thursday 2 Aug 01, David A. Cobb writes:
> At 8/2/01 07:01 AM (Thursday), David Starks-Browning wrote:
> >On Wednesday 1 Aug 01, David A. Cobb writes:
> > > Configure works fine, the "make" fails.
> > > ld is looking for several symbols "_imp__dbm_????????;" these are defined
> > > in "/bin/libgdbm.dll.a" and referenced from 
> > "<xemacs-build-dir>/database.o"
> > > -- the latter being customized from configure.

Did you really mean /bin/libgdbm.dll.a?  There should be
/bin/cyggdbm.dll, /lib/libgdbm.dll.a and /lib/libgdbm.a.  Inspect
/etc/setup/gdbm.lst.gz and see that everything got where it was
supposed to go.

> > > ../configure i686-pc-cygwin --prefix=/usr/local/ \
> > >   --exec-prefix=/usr/local/i686-pc-cygwin/ \
> > >   --libdir=/usr/local/lib/ \
> > >   --without-x \
> > >   --with-site-lisp \
> > >   --with-database=gdbm \
> > >   --with-sound=native,noesd \
> > >   --use-union-type && \
> > > make && \
> > > make install

> /usr/bin/gcc -mcygwin -g -O3 -Wall -Wno-switch -Winline 
> -Wmissing-prototypes -Wshadow -Wsign-compare 
> -Wpointer-arith   -mwindows   -o temacs  abbrev.o alloc.o blocktype.o 
> buffer.o bytecode.o callint.o callproc.o casefiddle.o casetab.o chartab.o 
> cmdloop.o cmds.o console.o console-stream.o data.o device.o dired.o doc.o 
> doprnt.o dynarr.o editfns.o elhash.o emacs.o eval.o events.o debug.o 
> tests.o filelock.o ntplay.o unexcw.o scrollbar-msw.o menubar-msw.o 
> toolbar-msw.o dialog-msw.o console-msw.o device-msw.o event-msw.o 
> frame-msw.o objects-msw.o select-msw.o redisplay-msw.o glyphs-msw.o 
> gui-msw.o postgresql.o dgif_lib.o gif_io.o menubar.o scrollbar.o dialog.o 
> toolbar.o file-coding.o realpath.o getloadavg.o inline.o linuxplay.o 
> miscplay.o console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o 
> redisplay-tty.o cm.o terminfo.o event-unixoid.o database.o process-unix.o 
> event-stream.o extents.o faces.o fileio.o  filemode.o floatfns.o fns.o 
> font-lock.o frame.o general.o glyphs.o glyphs-eimage.o glyphs-widget.o 
> gui.o gutter.o  hash.o imgproc.o indent.o insdel.o intl.o 
> keymap.o  line-number.o lread.o lstream.o macros.o marker.o md5.o minibuf.o 
> objects.o opaque.o print.o process.o profile.o rangetab.o redisplay.o 
> redisplay-output.o regex.o search.o select.o sheap.o signal.o sound.o 
> specifier.o strftime.o symbols.o syntax.o sysdep.o undo.o  widget.o 
> window.o win32.o xemacs_res.o lastfile.o gmalloc.o free-hook.o 
> vm-limit.o      -ltiff -lpng -ljpeg -lz -lgdbm -lncurses -lpq -lwinmm 
> -lshell32 -lgdi32 -luser32 -lcomdlg32 -lcomctl32 -lwinspool
> linuxplay.o: In function `play_sound_file':
> /usr/local/src/XEmacs/xemacs-21.5/src/linuxplay.c(.text+0x1108): multiple 
> definition of `play_sound_file'
> ntplay.o(.text+0x418):/usr/local/src/XEmacs/xemacs-21.5/src/ntplay.c: first 
> defined here
> linuxplay.o: In function `play_sound_data':
> /usr/local/src/XEmacs/xemacs-21.5/src/linuxplay.c(.text+0x116c): multiple 
> definition of `play_sound_data'
> ntplay.o(.text+0x588):/usr/local/src/XEmacs/xemacs-21.5/src/ntplay.c: first 
> defined here
> /usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/../../../../i686-pc-cygwin/bin/ld: 
> warning: cannot find entry symbol _WinMainCRTStartup; defaulting to 00401000
> database.o: In function `Fopen_database':
> /usr/local/src/XEmacs/xemacs-21.5/src/database.c:627: undefined reference 
> to `_imp__dbm_open'
> database.o: In function `dbm_map':
> /usr/local/src/XEmacs/xemacs-21.5/src/database.c:265: undefined reference 
> to `_imp__dbm_firstkey'
> /usr/local/src/XEmacs/xemacs-21.5/src/database.c:269: undefined reference 
> to `_imp__dbm_fetch'
> /usr/local/src/XEmacs/xemacs-21.5/src/database.c:267: undefined reference 
> to `_imp__dbm_nextkey'
> database.o: In function `dbm_get':
> /usr/local/src/XEmacs/xemacs-21.5/src/database.c:283: undefined reference 
> to `_imp__dbm_fetch'
> database.o: In function `dbm_put':
> /usr/local/src/XEmacs/xemacs-21.5/src/database.c:301: undefined reference 
> to `_imp__dbm_store'
> database.o: In function `dbm_remove':
> /usr/local/src/XEmacs/xemacs-21.5/src/database.c:313: undefined reference 
> to `_imp__dbm_delete'
> database.o: In function `dbm_closeit':
> /usr/local/src/XEmacs/xemacs-21.5/src/database.c:339: undefined reference 
> to `_imp__dbm_close'
> collect2: ld returned 1 exit status
> make[1]: *** [temacs] Error 1
> make[1]: Leaving directory 
> `/usr/local/src/XEmacs/xemacs-21.5/i686-pc-cygwin/src'
> make: *** [src] Error 2

With the latest xemacs 21.5 (21.5.2 or cvs), configure should
automatically get the sound right on Cygwin.  (This was broken on
21.5.1.)  I don't know what 'native' and 'noesd' are (nor do I know
whether sound actually *works* for me -- it just builds), but maybe
your choices confused configure.  This is either user error, or a
matter for the xemacs developers to fix.

Once you get that sorted, my advice is to run the offending gcc
command by hand, adding -v to see where ld finds libgdbm.

I would also add that my gcc command line does not contain '-mcygwin'.
I don't know where this would have come from, or whether it has any
effect.

Hope this helps.

Regards,
David

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/