Subject: RE: curses problem trying to build ruby
From: John Wiersba <[email-masked]>
To: "'Charles Wilson'" <[email-masked]>
Cc: "'cygwin'" <[email-masked]>
Date: Wed, 13 Dec 2000 16:38:57 -0500

Charles,

Perfect!  That was the problem.  I solved it by reinstalling everything from
scratch.  The make of ruby is going much better.  Thanks for your help!! 

I'm having a problem further on now.  I've sent email to the author, but I
thought I'd ask you on the off chance that you've actually built ruby.

   make[1]: Leaving directory `/jrw/ftp/ruby/junk/ruby-1.6.1/ext/Win32API'
   make[1]: Entering directory `/jrw/ftp/ruby/junk/ruby-1.6.1'
   windres --include-dir . --include-dir . --include-dir ./win32 ruby.rc 
      ruby.res.o

   gcc -g -O2   main.o ruby.exp ruby.res.o librubys.a -lcrypt   -o ruby.exe
   gcc: ruby.exp: No such file or directory
   make[1]: *** [ruby.exe] Error 1
   make[1]: Leaving directory `/jrw/ftp/ruby/junk/ruby-1.6.1'

There's no ruby.exp (and I couldn't see how one is supposed to be made -- I
tried "make ruby.exp").

-- John Wiersba

> -----Original Message-----
> From: Charles Wilson [mailto:[email-masked]]
> Sent: Wednesday, December 13, 2000 12:42 PM
> To: John Wiersba
> Cc: [email-masked]
> Subject: Re: curses problem trying to build ruby
> 
> 
> John Wiersba wrote:
> > 
> > Charles,
> > 
> > I simplified the problem a little, to get rid of dllwrap:
> > 
> >    $ cd ruby-1.6.1/ext/curses
> >    $ gcc curses.o -L../.. -lcygwin-ruby16 -lncurses
> >    curses.o: In function `free_window':
> >    /.../ruby-1.6.1/ext/curses/curses.c:65: undefined 
> reference to `stdscr'
> >    ...
> > 
> > It looks like stdscr is not defined in libncurses.  But,
> > 
> >    $ cd /usr/lib
> >    $ ls -l *cur*
> >    lrw-r--r-- 1 jrw JRW     23 Dec 12 18:36 libcurses.a -> 
> libncurses.a
> >    lrw-r--r-- 1 jrw JRW     27 Dec 12 18:36 libcurses.dll.a ->
> > libncurses.dll.a
> >    -rw-r--r-- 1 jrw JRW 277240 Nov 25 00:44 libncurses++.a
> >    -rw-r--r-- 1 jrw JRW 392186 Nov 25 00:08 libncurses.a
> >    -rw-r--r-- 1 jrw JRW 263752 Nov 25 00:44 libncurses.dll.a
> >    -rw-r--r-- 1 jrw JRW   4820 Nov 11 01:32 libsecur32.a
> >    $ nm libncurses.a | grep stdscr
> >             U _stdscr
> >    ...
> >             U _stdscr
> >    00000000 D _stdscr
> >             U _stdscr
> > 
> > seems to show that it is.
> 
> But you're not linking to libncurses.a.  You are linking to
> libncurses.dll.a, the dll import lib.  To avoid this, you have to
> specify -static.  But that's not the real puzzler.  
> 
> /usr/include/ncurses.h defines stdscr thus:
>    extern NCURSES_EXPORT_VAR(WINDOW *)   stdscr;
> which expands to 
>    extern __declspec(dllimport) WINDOW * stdscr;
> 
> Short version: curses.o should have the following undefined symbol
>               U _imp__stdscr
> not
>               U _stdscr
> 
> And by linking to libncurses.dll.a (the default), the linker will find
> __imp__stdscr.
> 
> However, it appears that you are including a *different* 
> ncurses.h from
> somewhere, because your curses.o is not seeing the 
> __declspec(dllimport)
> decoration.  Do you have an old ncurses installed in '/usr/local' ?
> 
> If so (and if it's the old cygutils version) remove it using
> http://cygutils.netpedia.net/V1.1/usr-local/Obsolete.html  -- but READ
> the directions first: you only want to remove 
> /usr/local/---ncurses, not
> /usr/local/---everything. (If you have other programs that have been
> compile using the /usr/local/---ncurses, you'll need to set
> TERMINFO=/usr/share/terminfo to prevent them from looking in
> /usr/local/share/terminfo for their terminfo database).
> 
>  --Chuck
> 
> --
> Want to unsubscribe from this list?
> Send a message to [email-masked]
> 

--
Want to unsubscribe from this list?
Send a message to [email-masked]