Sto provando a iniziare a sviluppare un programma utilizzando ncurses su Linux. Non riesco nemmeno a compilare l'esempio di Hello World. Ecco il codice:Riferimento non definito quando si utilizzano ncurses su linux
#include <curses.h>
int main()
{
initscr();
printw("Hello, world.");
refresh();
getch();
endwin();
return 0;
}
Quando tento di compilare, ottengo:
hello.c:(.text+0x12): undefined reference to `initscr'
Per ognuna di quelle funzioni chiamate.
ho installato ncurses tramite apt-get, e anche scaricando i sorgenti e la compilazione, l'installazione, ecc
Ho provato #include
sia curses.h
e ncurses.h
.
Che cosa sta succedendo?
Perché '$ gcc -lncurses -o ciao ciao.c' non funziona ma' $ gcc -o ciao ciao.c -lncurses' fa? – rootkea
@rootkea Poiché il linker opera sugli oggetti nell'ordine in cui compaiono nella riga di comando. Quando vede 'ciao' prima, ricorda tutti i simboli di cui ha bisogno, e poi quando vede la libreria' ncurses', risolve quei simboli usando ciò che trova. Se "ncurses" viene prima, vede un mucchio di simboli ma dice "Non ho bisogno di nessuno di quelli" e li scarto. Vedi la [documentazione] (https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#index-l-1172) o [altre missioni SO] (http://stackoverflow.com/questions/45135/linker-order-gcc) per i dettagli. –