Curses, foiled again.

Kevin Buettner plug-discuss@lists.plug.phoenix.az.us
Sun, 5 May 2002 03:18:03 -0700


On May 4,  8:09pm, foodog wrote:

> I'm trying to port a program written in VAX C circa 1988 that uses
> Curses library calls. When I try to build it I get a bunch of errors,
> specifically:
> 
> [steve@gemini steve]$ cc bedit.c
> /tmp/ccNUfExw.o: In function `main':
> /tmp/ccNUfExw.o(.text+0x14e): undefined reference to `initscr'
> /tmp/ccNUfExw.o(.text+0x172): undefined reference to `newwin'
> /tmp/ccNUfExw.o(.text+0x1d2): undefined reference to `endwin'
> /tmp/ccNUfExw.o: In function `edit_buffer':
> /tmp/ccNUfExw.o(.text+0x369): undefined reference to `wprintw'
> /tmp/ccNUfExw.o(.text+0x39d): undefined reference to `wmove'
> /tmp/ccNUfExw.o: In function `first_screen':
> /tmp/ccNUfExw.o(.text+0x414): undefined reference to `wrefresh'
> /tmp/ccNUfExw.o: In function `key_not_supported':
> /tmp/ccNUfExw.o(.text+0x5b4): undefined reference to `werase'
> ... etc. etc. etc.
> collect2: ld returned 1 exit status
> 
> I'm including stdio.h and curses.h.  The functions are listed in
> curses.h so I'm hoping there's some compiler switch I'm missing out on. 

You are linking it with the curses library, aren't you?  (I.e, put
-lcurses on your link line.  If that doesn't work, try -lncurses.)

FWIW, on one of my Red Hat 7.2 systems, I see:

$ objdump -T /usr/lib/libcurses.so | grep initscr
00014ad4 g    DF .text  000000c2  Base        initscr
$ objdump -T /usr/lib/libcurses.so | grep newwin
00017b30 g    DF .text  0000013b  Base        newwin
$ objdump -T /usr/lib/libcurses.so | grep endwin
00011f94 g    DF .text  00000050  Base        endwin
00014ea4 g    DF .text  00000029  Base        isendwin

So the symbols are there...  (Or at least they are on my system.)

Kevin