estoy tratando de empezar a desarrollar un programa usando ncurses en Linux. Ni siquiera puedo obtener el ejemplo Hello World para compilar. Aquí está el código:referencia indefinida al usar ncurses en Linux
#include <curses.h>
int main()
{
initscr();
printw("Hello, world.");
refresh();
getch();
endwin();
return 0;
}
Cuando intento compilar, obtengo:
hello.c:(.text+0x12): undefined reference to `initscr'
Para cada una de esas llamadas funciones.
He instalado ncurses a través de apt-get, y también mediante la descarga de las fuentes y la compilación, instalación, etc.
He tratado #include
tanto curses.h
y ncurses.h
.
¿Qué está pasando?
¿Por qué '$ gcc -o hola -lncurses hello.c' no funciona, pero' $ gcc -o hola -lncurses' hola.c hace? – rootkea
@rootkea Porque el enlazador opera en objetos en el orden en que aparecen en la línea de comando. Cuando ve 'hello' primero, recuerda todos los símbolos que necesita, y luego cuando ve la biblioteca 'ncurses', resuelve esos símbolos usando lo que encuentra. Si 'ncurses' aparece primero, ve un montón de símbolos pero dice" No los necesito "y los descarta. Consulte la [documentación] (https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#index-l-1172) u [otras preguntas de SO] (http://stackoverflow.com/questions/45135/linker-order-gcc) para más detalles. –