gcc /usr/bin/ld: error: cannot find -lncurses

Yrrej10 picture Yrrej10 · Jan 19, 2013 · Viewed 44.9k times · Source

I am running Ubuntu 12.04 and I'm currently working on a project involving C, OpenGL, a teapot and input methods.

The problem started when I decided to have arrow keys as input. I checked to see the key codes for arrow keys but all of the arrows return 0. I looked up how to get this to work and I found conio.h. Unfortunately, it is an old DOS header that is not available for Linux. Then I found a substitute called ncurses.

After installing the necessary libraries, by following the build instructions closely, I #included curses.h in my main.c source. When I first tried to compile using gcc, I got the following errors:

main.o:main.c:function _Key: error: undefined reference to 'stdscr'
main.o:main.c:function _Key: error: undefined reference to 'wgetch'
main.o:main.c:function _Key: error: undefined reference to 'stdscr'
main.o:main.c:function _Key: error: undefined reference to 'wgetch'

I found a fix by adding -lncurses to the makefile like so:

SOURCES=main.c

main: main.o
    gcc -lm -lGL -lGLU -lglut -lncurses main.o -o main

main.o: main.c
    gcc -lm -lGL -lGLU -lglut -c main.c

But I was greeted by another error:

/usr/bin/ld: error: cannot find -lncurses

As well as the previous errors.

I have spent the last 2 days searching both the Ubuntu forums and StackOverFlow. Any help would be appreciated.

P.S. I don't know if this is important but when I try to run /usr/bin/ld I get this error:

ld: fatal error: no input files

Answer

Dale picture Dale · Jan 7, 2015

For anyone with the same problem I had: I was missing the 32 bit libraries; I was compiling 32 bit on a 64 bit server which was missing the lib32ncurses5-dev package.

On Ubuntu I simply ran:

sudo apt-get install lib32ncurses5-dev