Was ist der Unterschied zwischen -lcurses und -lncurses wenn C ncurses lib mit Kompilieren?
Frage
Ich lerne C und spielen mit der ncurses lib. Ich habe Verweise auf beiden -lcurses gesehen und -lncurses aber ich habe noch keine Unterschiede finden (beide arbeiten bei der Kompilierung).
Schätzen Sie die Hilfe!
Lösung
ncurses ist ein Open-Source-Klon des ursprünglichen Unix Flüche Bibliothek. libcurses. * in der Regel Punkte auf libncurses. * , um die Kompatibilität mit der ursprünglichen Bibliothek, so gäbe es keinen praktischen Unterschied zwischen übereinander verwenden.
Wenn Sie in der Tat mehr als ein 'Flüche-type' Bibliothek installiert ist, -lcurses verbinden würde im Wesentlichen Ihr Programm einen Standard, während -lncurses würde explizit wählen, die ncurses Umsetzung.
Andere Tipps
Auf meiner OpenSUSE 12.3 Box gibt es keine Links zu libcurses mit ncurses installiert. Etwaige C-Programme, die verwenden versuchen, die -lcurses Flagge schlagen fehl, bis Sie die Flagge -lncurses ändern.
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
Die Links fehlen auch auf Fedora 17 jedoch auf Ubuntu 13.04 die Links vorhanden sind:
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
mit -lcurses So Kompilieren auf OpenSUSE und Fedora scheitern aber die Arbeit an Ubuntu. Kompilieren mit -lncurses wird für alle drei Distributionen arbeiten.
Das Mitnehmen:. Wenn Sie Ihren Code wollen auf verschiedenen Linux-Distributionen kompilieren, sollten Sie -lncurses verwenden
Auf meinem System (Slackware64 13,0), libcurses.so
und Freunde sind nur symbolische Links auf die ncurses gleichwertig, so gibt es keinen Unterschied. Die libcurses.so
(-lcurses
) Name ist wahrscheinlich nur rückwärts zu anderen Systemen, die eine Flüche Implementierung als ncurses andere haben entworfen Code-Kompatibilität zu gewährleisten.
Auf meinem (Fedora 11) PC /usr/lib/libcurses.so enthält: "INPUT (-lncurses)". Ich denke, es bedeutet, dass die zwei Form (-lcurses, -lncurses) entspricht.