Quelle est la différence entre -lcurses et -lncurses lors de la compilation C en utilisant ncurses lib?
Question
J'apprends C et jouer avec les ncurses lib. J'ai vu des références à la fois -lcurses et -lncurses mais je dois encore trouver des différences (travail à la fois lors de la compilation).
Appréciez l'aide!
La solution
ncurses est un clone open source de l'Unix malédictions originale bibliothèque . libcurses. * les points habituellement à libncurses. * pour assurer la compatibilité avec la bibliothèque d'origine, donc il n'y aurait pas de différence pratique entre l'utilisation de l'un sur l'autre.
Si vous avez en fait plus d'un « maudit de type » bibliothèque installée, -lcurses relierait essentiellement votre programme par défaut un, alors que -lncurses serait choisir explicitement la mise en œuvre ncurses.
Autres conseils
Sur ma boîte OpenSUSE 12.3, il n'y a pas de liens vers libcurses avec ncurses installés. Tous les programmes C qui tentent d'utiliser le drapeau -lcurses échoueront jusqu'à ce que vous changez le drapeau -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
Les liens manquent également sur Fedora 17. Cependant, sur Ubuntu 13.04 les liens sont présents:
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
compilation avec -lcurses échouera sur OpenSUSE et Fedora, mais travailler sur Ubuntu. Compiler avec -lncurses travaillera pour les trois distros.
Les plats à emporter. Si vous voulez que votre code pour compiler sur différentes distributions Linux, vous devez utiliser -lncurses
Sur mon système (Slackware64 13,0), libcurses.so
et les amis sont simplement des liens symboliques à l'équivalent ncurses, donc il n'y a pas de différence. Le libcurses.so
(-lcurses
) Le nom est probablement juste de fournir rétrocompatibilité avec le code conçu pour d'autres systèmes qui ont une implémentation malédictions autre que ncurses.
Sur mon (fedora 11) PC /usr/lib/libcurses.so contient: "INPUT (-lncurses)". Je pense que cela signifie que les deux forment (-lcurses, -lncurses) est équivalent.