Quelle est la différence entre -lcurses et -lncurses lors de la compilation C en utilisant ncurses lib?

StackOverflow https://stackoverflow.com/questions/1517756

  •  19-09-2019
  •  | 
  •  

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!

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top