"undefined reference" errors to several ncurses functions, but it is installed!
by dedec0 from LinuxQuestions.org on (#5DSA9)
To start with a working code, i tried a search, found an example, and tried to compile it. The code in https://stackoverflow.com/questions/...eys-with-linux is this:
Code:#include <ncurses.h>
int main(){
int ch;
initscr();
raw();
keypad(stdscr, TRUE);
noecho();
while ((ch = getch()) != '#') {
switch(ch) {
case KEY_UP: printw("\nUp");
break;
case KEY_DOWN: printw("\nDown");
break;
case KEY_LEFT: printw("\nLeft");
break;
case KEY_RIGHT: printw("\nRight");
break;
default: printw("%c", ch);
}
}
refresh();
getch();
endwin();
}but compiling it causes this:
Code:$ gcc u.c
/tmp/ccH7bruR.o: In function `main':
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:5:
undefined reference to `initscr'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:6:
undefined reference to `raw'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:7:
undefined reference to `stdscr'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:7:
undefined reference to `keypad'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:8:
undefined reference to `noecho'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:13:
undefined reference to `printw'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:16:
undefined reference to `printw'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:19:
undefined reference to `printw'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:22:
undefined reference to `printw'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:25:
undefined reference to `printw'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:11:
undefined reference to `stdscr'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:11:
undefined reference to `wgetch'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:28:
undefined reference to `stdscr'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:28:
undefined reference to `wrefresh'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:29:
undefined reference to `stdscr'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:29:
undefined reference to `wgetch'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:30:
undefined reference to `endwin'
collect2: error: ld returned 1 exit status
$ncurses is installed:
Code:$ apt list --installed | grep ncurses
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
libncurses5/oldstable,now 6.0+20161126-1+deb9u2
amd64 [installed]
libncurses5-dev/oldstable,now 6.0+20161126-1+deb9u2
amd64 [installed]
libncursesw5/oldstable,now 6.0+20161126-1+deb9u2
amd64 [installed]
ncurses-base/now 6.0+20161126-1 all [installed,upgradable
to: 6.0+20161126-1+deb9u2]
ncurses-bin/now 6.0+20161126-1 amd64 [installed,upgradable
to: 6.0+20161126-1+deb9u2]
ncurses-examples/oldstable,now 6.0+20161126-1+deb9u2
amd64 [installed]
ncurses-term/now 6.0+20161126-1 all [installed,upgradable
to: 6.0+20161126-1+deb9u2]
$


Code:#include <ncurses.h>
int main(){
int ch;
initscr();
raw();
keypad(stdscr, TRUE);
noecho();
while ((ch = getch()) != '#') {
switch(ch) {
case KEY_UP: printw("\nUp");
break;
case KEY_DOWN: printw("\nDown");
break;
case KEY_LEFT: printw("\nLeft");
break;
case KEY_RIGHT: printw("\nRight");
break;
default: printw("%c", ch);
}
}
refresh();
getch();
endwin();
}but compiling it causes this:
Code:$ gcc u.c
/tmp/ccH7bruR.o: In function `main':
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:5:
undefined reference to `initscr'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:6:
undefined reference to `raw'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:7:
undefined reference to `stdscr'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:7:
undefined reference to `keypad'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:8:
undefined reference to `noecho'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:13:
undefined reference to `printw'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:16:
undefined reference to `printw'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:19:
undefined reference to `printw'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:22:
undefined reference to `printw'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:25:
undefined reference to `printw'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:11:
undefined reference to `stdscr'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:11:
undefined reference to `wgetch'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:28:
undefined reference to `stdscr'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:28:
undefined reference to `wrefresh'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:29:
undefined reference to `stdscr'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:29:
undefined reference to `wgetch'
/dev/shm/t/ncurses/ncurses-6.0+20161126/test/u.c:30:
undefined reference to `endwin'
collect2: error: ld returned 1 exit status
$ncurses is installed:
Code:$ apt list --installed | grep ncurses
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
libncurses5/oldstable,now 6.0+20161126-1+deb9u2
amd64 [installed]
libncurses5-dev/oldstable,now 6.0+20161126-1+deb9u2
amd64 [installed]
libncursesw5/oldstable,now 6.0+20161126-1+deb9u2
amd64 [installed]
ncurses-base/now 6.0+20161126-1 all [installed,upgradable
to: 6.0+20161126-1+deb9u2]
ncurses-bin/now 6.0+20161126-1 amd64 [installed,upgradable
to: 6.0+20161126-1+deb9u2]
ncurses-examples/oldstable,now 6.0+20161126-1+deb9u2
amd64 [installed]
ncurses-term/now 6.0+20161126-1 all [installed,upgradable
to: 6.0+20161126-1+deb9u2]
$