未定义的参考在libncurses函数

当我编译这个代码时,我得到了下面的gcc错误:

/tmp/ccUigsI6.o: In function `main': /home/matt/Dropbox/school/2011/cs3210/test/sizeterm.c:9: undefined reference to `setupterm' /home/matt/Dropbox/school/2011/cs3210/test/sizeterm.c:10: undefined reference to `tigetnum' /home/matt/Dropbox/school/2011/cs3210/test/sizeterm.c:11: undefined reference to `tigetnum' collect2: ld returned 1 exit status make: *** [sizeterm] Error 1 

代码如下:

 #include <stdio.h> #include <term.h> #include <curses.h> #include <stdlib.h> int main() { int nrows, ncolumns; setupterm(NULL, fileno(stdout), (int *)0); nrows = tigetnum("lines"); ncolumns = tigetnum("cols"); printf("This terminal has %d columns and %d rows\n", ncolumns, nrows); exit(0); } 

Libncurses在我的机器上正确安装。 我得到了我的Arch Linux笔记本电脑和安装在我学校的Ubuntu服务器的相同结果。 这段代码直接从书中提取出来。 难道我做错了什么? 我做了一些Googlesearch,看起来好像人们之前有这个问题,但我不能缩小解决scheme的范围。

你忘了实际上链接到ncurses。 向gcc命令行添加-lcurses

这正是你在同一本书中找到的地方,你发现这个代码:

$ cc -o badterm badterm.c -lncurses

从linux编程第四版开始,第五章:终端,第196页。