This is the mail archive of the
mailing list for the Cygwin project.
RE: curses problem trying to build ruby
- To: 'Charles Wilson' <cwilson at ece dot gatech dot edu>
- Subject: RE: curses problem trying to build ruby
- From: John Wiersba <John dot Wiersba at medstat dot com>
- Date: Wed, 13 Dec 2000 16:38:57 -0500
- Cc: 'cygwin' <cygwin at sourceware dot cygnus dot com>
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: Leaving directory `/jrw/ftp/ruby/junk/ruby-1.6.1/ext/Win32API'
make: Entering directory `/jrw/ftp/ruby/junk/ruby-1.6.1'
windres --include-dir . --include-dir . --include-dir ./win32 ruby.rc
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: *** [ruby.exe] Error 1
make: 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@example.com]
> Sent: Wednesday, December 13, 2000 12:42 PM
> To: John Wiersba
> Cc: firstname.lastname@example.org
> 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 ->
> > 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
> U _stdscr
> And by linking to libncurses.dll.a (the default), the linker will find
> However, it appears that you are including a *different*
> ncurses.h from
> somewhere, because your curses.o is not seeing the
> 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).
> Want to unsubscribe from this list?
> Send a message to email@example.com
Want to unsubscribe from this list?
Send a message to firstname.lastname@example.org