This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: 1.5.25-15: First steps with ncurses programming: can NOT build Hello_world app


Alexey Lyubimov wrote:
> Unfortunately, things went worse :-(
> After I've upgraded to GCC 3.4.4-999 and libncurses9-5.7-2 I get the following error instead of a ld's warning (see my first message in this thread for the reference):
> 
> $ gcc -otnc -g -Wl,--enable-auto-import tnc.c -lncurses
> /cygdrive/c/windows/temp/ccUqygVy.o: In function `main':
> /cygdrive/e/home/ael/work/ncurses/tnc.c:15: undefined reference to `_stdscr'
> collect2: ld returned 1 exit status

The only way this could've happened is if you compiled tnc.c with the
5.5-3 headers (that is, the ones matching libncurses8) but tried to link
against libncurses9 (e.g. 5.7-1, 5.7-2, or 5.7-3).  However, because the
link libraries and header files are all distributed together in one
package (libncurses-devel), AND because you compiled and linked all at
once in the same command, I'm at a loss to explain what happened.

FYI, for ease of diagnosing build failures like this, I usually -- even
when an app consists of only a single source file -- compile and link in
separate steps:

$ gcc -g -o tnc.o -c tnc.c
$ gcc -Wl,--enable-auto-import -o tnc tnc.o -lncurses

My first guess, with 5.7-1 and 5.7-2, but not 5.7-3, would be that the
stdscr symbol has moved from the ncurses library to the tinfo library,
so you needed to link using '-lncurses -ltinfo'.  BUT, in the 5.7
versions of ncurses, that symbol is no longer named _stdscr (you use
stdscr in YOUR code, but the ncurses.h header magic turns it into
ncwrap_stdscr() behind your back).  So, if THAT were the problem, you'd
have seen "...tnc.c:15: undefined reference to `_ncwrap_scdstr'" once
you got to the linker stage.

In any case, the tinfo library has been re-merged back into the main
ncurses library with the release of 5.7-3/5.7-12.

So, my recommendation in any case would have been to upgrade to
ncurses-5.7-3 once it propagated to the mirrors. So, I'm glad that fixed
the problem for you.

Sorry for the trouble.

--
Chuck

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]