неопределенная ссылка на функции в libncurses - PullRequest
3 голосов
/ 14 сентября 2011

Когда я компилирую этот код, я получаю следующие ошибки 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 ]

3 голосов
/ 16 июля 2013

Это именно то, что вы найдете в той же книге, где вы нашли этот код:

$ cc -o badterm badterm.c -lncurses

Начало linuxпрограммирование 4-е издание, глава 5: Клеммы, стр. 196.

3 голосов
/ 14 сентября 2011

Вы на самом деле забыли ссылку против ncurses. Добавьте -lcurses в командную строку gcc.

...