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頁。