Undefined reference when using ncurses on linux

Alistair picture Alistair · Apr 30, 2009 · Viewed 20.4k times · Source

I'm trying to start developing a program using ncurses on Linux. I can't even get the Hello World example to compile. Here's the code:

#include <curses.h>

int main()
{         
        initscr();
        printw("Hello, world.");
        refresh();
        getch();
        endwin();
        return 0;
}

When I attempt to compile, I get:

hello.c:(.text+0x12): undefined reference to `initscr'

For every one of those called functions.

I installed ncurses via apt-get, and also by downloading the sources and compiling, installing, etc.

I have tried #include both curses.h and ncurses.h.

What is going on?

Answer

Greg Hewgill picture Greg Hewgill · Apr 30, 2009

Have you used the -lcurses option when linking?

Including the header files let the code compile (because the compiler knows what the function call looks like from the .h file), but the linker needs the library file to find the actual code to link into your program.