对libncurses中函数的未定义引用

时间:2011-09-14 01:51:09

标签: 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/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服务器得到了相同的结果。这段特殊的代码直接取自本书。难道我做错了什么?我做了一些谷歌搜索,看起来好像以前有人遇到过这个问题,但我无法缩小解决方案。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

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

  

$ cc -o badterm badterm.c -lncurses

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