the menuconfig make instalar c linux gcc ubuntu ncurses

menuconfig - gcc/usr/bin/ld: error: no puedo encontrar-lncurses



ncurses linux (3)

En primer lugar, debe colocar las bibliotecas después del archivo de objeto al vincular. Y no tenerlos en absoluto en la compilación del archivo fuente.

Después de eso, si ncurses no está instalado en una carpeta de búsqueda estándar, debe señalar al vinculador donde está, esto se hace con la opción de línea de comando -L :

gcc main.o -o main -L/location/of/ncurses -lm -lGL -lGLU -lglut -lncurses

Estoy ejecutando Ubuntu 12.04 y actualmente estoy trabajando en un proyecto que involucra C, OpenGL, una tetera y métodos de entrada.

El problema comenzó cuando decidí tener las teclas de flecha como entrada. Revisé para ver los códigos de las teclas de flecha, pero todas las flechas devuelven 0. Busqué cómo funciona y encontré conio.h. Desafortunadamente, es un antiguo encabezado de DOS que no está disponible para Linux. Entonces encontré un sustituto llamado ncurses.

Después de instalar las bibliotecas necesarias, siguiendo de cerca las instrucciones de compilación, #included curses.h en mi fuente main.c. La primera vez que intenté compilar usando gcc, obtuve los siguientes errores:

main.o:main.c:function _Key: error: undefined reference to ''stdscr'' main.o:main.c:function _Key: error: undefined reference to ''wgetch'' main.o:main.c:function _Key: error: undefined reference to ''stdscr'' main.o:main.c:function _Key: error: undefined reference to ''wgetch''

Encontré una solución agregando -lncurses al makefile así:

SOURCES=main.c main: main.o gcc -lm -lGL -lGLU -lglut -lncurses main.o -o main main.o: main.c gcc -lm -lGL -lGLU -lglut -c main.c

Pero me saludó otro error:

/usr/bin/ld: error: cannot find -lncurses

Así como los errores anteriores.

He pasado los últimos 2 días buscando tanto en los foros de Ubuntu como en StackOverFlow. Cualquier ayuda sería apreciada.

PD: no sé si esto es importante, pero cuando intento ejecutar / usr / bin / ld obtengo este error:

ld: fatal error: no input files


Intente instalar el paquete ncurses-static también, si solo tiene instalado el paquete ncurses-devel en su sistema operativo Ubuntu.

Si eso resuelve tu problema, y ​​además si agregas las instrucciones de compilación de @ Joachim, tienes un gran comienzo.

gcc main.o -o main -L/location/of/ncurses -lm -lGL -lGLU -lglut -lncurses

El enlazador no puede encontrar su biblioteca compartida en su ruta de búsqueda. Si agrega el directorio donde está su biblioteca compartida a la LD_LIBRARY_PATH entorno LD_LIBRARY_PATH , el vinculador debería encontrarla y poder vincularse con ella. En ese caso, podría omitir la opción -L en gcc:

gcc main.o -o main -lm -lGL -lGLU -lglut -lncurses

Y debe compilarse bien.

EDITAR: Es bueno saber que apt-get install libncurses5-dev soluciona su problema.

Para tu información La LD_LIBRARY_PATH entorno LD_LIBRARY_PATH contiene una lista de rutas separadas por dos puntos que el vinculador utiliza para resolver las dependencias de la biblioteca en el tiempo de ejecución. Estas rutas tendrán prioridad sobre las rutas de biblioteca estándar /lib y /usr/lib . Se seguirán buscando las rutas estándar, pero solo después de que se haya agotado la lista de rutas en LD_LIBRARY_PATH .

La mejor manera de usar LD_LIBRARY_PATH es configurarlo en la línea de comandos o en el script inmediatamente antes de ejecutar el programa. De esta manera, puede mantener el nuevo LD_LIBRARY_PATH aislado del resto de su sistema, es decir, local a la instancia actual en ejecución del shell.

$ export LD_LIBRARY_PATH="/path/to/libncurses/library/directory/:$LD_LIBRARY_PATH" $ gcc main.o -o main -lm -lGL -lGLU -lglut -lncurses


Para cualquier persona con el mismo problema que tuve: me faltaban las bibliotecas de 32 bits; Estaba compilando 32 bits en un servidor de 64 bits al que le faltaba el paquete lib32ncurses5-dev.

En Ubuntu simplemente ejecuté:

sudo apt-get install lib32ncurses5-dev