对libncurses中函数的未定义引用

对libncurses中函数的未定义引用,c,linux,gcc,ncurses,C,Linux,Gcc,Ncurses,编译此代码时,会出现以下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

编译此代码时,会出现以下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);
}
#包括
#包括
#包括
#包括
int main()
{
int nrows,N列;
setupterm(NULL,文件号(stdout),(int*)0;
nrows=tigetnum(“行”);
ncolumns=tigetnum(“cols”);
printf(“此终端有%d列和%d行\n”,n列,nrows);
出口(0);
}

Libncurses已正确安装在我的计算机上。我从我的Arch linux笔记本电脑和学校安装的Ubuntu服务器上得到了同样的结果。这段特殊的代码是直接从书中摘录的。我做错什么了吗?我在谷歌上搜索过,看起来人们以前也遇到过这个问题,但我无法缩小解决方案的范围。

您忘记了实际链接ncurses。将
-lcurses
添加到gcc命令行。

这正是您在找到此代码的同一本书中找到的内容:

$cc-o badterm badterm.c-lncures

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