当我编译这个代码时,我得到了下面的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页。