2009-10-05 6 views

Respuesta

12

ncurses es un clon de código abierto del original Unix maldiciones biblioteca. libcurses. * por lo general apunta a libncurses. * para proporcionar compatibilidad con la biblioteca original, por lo que no habría ninguna diferencia práctica entre el uso de uno sobre el otro.

Si, de hecho, tiene más de un 'maldiciones de tipo' biblioteca instalada, -lcurses esencialmente vincularía su programa para el que viene por defecto, mientras que -lncurses elegiría explícitamente la aplicación ncurses.

+2

En sistemas como Solaris, libcurses.so es la biblioteca original (Unix) de curses (o una biblioteca de curses mejorada, pero no la biblioteca libncurses de GNU). En los sistemas Linux, no hay diferencia. –

+0

@JonathanLeffler: Lo mismo para otras plataformas como IBM AIX, no hay ncurses sino las maldiciones originales o mejoradas. – Luciano

0

En mi sistema (Slackware64 13.0), libcurses.so y amigos son solo enlaces simbólicos al equivalente de ncurses, por lo que no hay diferencia. El nombre libcurses.so (-lcurses) es probablemente solo para proporcionar compatibilidad con versiones anteriores con código diseñado para otros sistemas que tienen una implementación de curses diferente a ncurses.

0

En mi (fedora 11) PC /usr/lib/libcurses.so contiene: "INPUT (-lncurses)". Creo que significa que las dos formas (-lcurses, -lncurses) son equivalentes.

2

En mi caja de OpenSUSE 12.3 no hay enlaces a libcurses con ncurses instalado. Cualquier programa C que intente utilizar el distintivo -lcurses fallará hasta que cambie el indicador a -lncurses.

OpenSUSE 12.3 > ls -al /usr/lib64/*curses* 
-rw-r--r-- 1 root root 2225910 Jan 25 2013 /usr/lib64/libncurses.a 
-rw-r--r-- 1 root root 780540 Jan 25 2013 /usr/lib64/libncurses++.a 
-rw-r--r-- 1 root root  69 Jan 25 2013 /usr/lib64/libncurses.so 
-rw-r--r-- 1 root root 782884 Jan 25 2013 /usr/lib64/libncurses++w.a 
-rw-r--r-- 1 root root 2768222 Jan 25 2013 /usr/lib64/libncursesw.a 
-rw-r--r-- 1 root root  70 Jan 25 2013 /usr/lib64/libncursesw.so 

Los enlaces también faltan en Fedora 17. Sin embargo, en Ubuntu 13.04 los enlaces están presentes:

Ubuntu 13.04 > ls -al /usr/lib/x86_64-linux-gnu/*curses* 
lrwxrwxrwx 1 root root  12 Feb 8 2013 /usr/lib/x86_64-linux-gnu/libcurses.a -> libncurses.a 
lrwxrwxrwx 1 root root  13 Feb 8 2013 /usr/lib/x86_64-linux-gnu/libcurses.so -> libncurses.so 
-rw-r--r-- 1 root root 294180 Feb 8 2013 /usr/lib/x86_64-linux-gnu/libncurses.a 
-rw-r--r-- 1 root root 158798 Feb 8 2013 /usr/lib/x86_64-linux-gnu/libncurses++.a 
-rw-r--r-- 1 root root  31 Feb 8 2013 /usr/lib/x86_64-linux-gnu/libncurses.so 

Así compilar con -lcurses fallará en OpenSUSE y Fedora, pero trabajar en Ubuntu. La compilación con -lncurses funcionará para las tres distribuciones.

Para llevar: si quiere que su código se compile en diferentes distribuciones de Linux, debe usar -lncurses.

Cuestiones relacionadas