7

私はCを学び、ncurseslibで遊んでいます。-lcursesと-lncursesの両方への参照を見てきましたが、まだ違いは見つかりませんでした(どちらもコンパイル時に機能します)。

助けに感謝します!

4

4 に答える 4

16

ncursesは、元のUnixcursesライブラリのオープンソースクローンです。 libcurses。*は通常、元のライブラリとの互換性を提供するためにlibncurses。*を指しているため、どちらを使用しても実際的な違いはありません。

実際に複数の'curses-type'ライブラリがインストールされている場合、-lcursesは基本的にプログラムをデフォルトのライブラリにリンクしますが、-lncursesは明示的にncurses実装を選択します。

于 2009-10-05T00:25:44.870 に答える
4

私のOpenSUSE12.3ボックスには、ncursesがインストールされているlibcursesへのリンクがありません。-lcursesフラグを使用しようとするCプログラムは、フラグを-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

リンクはFedora17でも欠落しています。ただし、Ubuntu13.04ではリンクが存在します。

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

したがって、-lcursesを使用したコンパイルは、OpenSUSEおよびFedoraでは失敗しますが、Ubuntuでは機能します。-lncursesを使用したコンパイルは、3つのディストリビューションすべてで機能します。

要点:コードをさまざまなLinuxディストリビューションでコンパイルする場合は、-lncursesを使用する必要があります。

于 2013-09-25T00:15:48.560 に答える
0

私のシステム(Slackware64 13.0)ではlibcurses.so、友達はncursesに相当するものへの単なるシンボリックリンクであるため、違いはありません。()の名前はlibcurses.so-lcursesおそらくncurses以外のcurses実装を持つ他のシステム用に設計されたコードとの下位互換性を提供するためのものです。

于 2009-10-05T00:22:16.357 に答える
0

私の(fedora 11)PCでは、/ usr / lib / libcurses.soに「INPUT(-lncurses)」が含まれています。これは、2つの形式(-lcurses、-lncurses)が同等であることを意味すると思います。

于 2009-10-05T00:23:06.747 に答える