2011-09-14 65 views
3

当我编译这段代码,我得到以下的gcc错误:未定义的引用功能的libncurses

/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服务器的相同结果。这段代码直接从书中提取出来。难道我做错了什么?我做了一些Google搜索,看起来好像之前有人遇到过这个问题,但我无法缩小解决方案的范围。

回答

3

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

3

这正是你在同一本书在哪里找到代码查找:

$ CC -o badterm badterm.c -lncurses

开始linux编程第4版,章5:终端,第196页。