使用ncurses lib编译C时,-lcurses和-lcucurses有什么区别?

时间:2009-10-05 00:16:24

标签: c ncurses

我正在学习C并使用ncurses lib。我看过对-lcurses和-lcucurses的引用,但我还没有发现任何差异(编译时都有效)。

感谢帮助!

4 个答案:

答案 0 :(得分:14)

ncurses 是原始Unix curses 库的开源克隆。 libcurses。* 通常指向 libncurses。* 以提供与原始库的兼容性,因此使用一个与另一个之间没有实际区别。

如果你确实安装了多个'curses-type'库, -lcurses 本质上会将你的程序链接到默认程序,而 -lncurses 会明确选择ncurses实现。

答案 1 :(得分:3)

在我的OpenSUSE 12.3框中,没有安装了ncurses的libcurses链接。在将标志更改为-lncurses之前,任何尝试使用-lcurses标志的C程序都将失败。

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

Fedora 17上也缺少链接。但是,在Ubuntu 13.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进行编译将适用于所有三个发行版。

要点:如果你想让你的代码在不同的Linux发行版上编译,你应该使用-lncurses。

答案 2 :(得分:0)

在我的系统(Slackware64 13.0)上,libcurses.so和朋友只是ncurses等效的符号链接,所以没有区别。 libcurses.so-lcurses)名称可能只是为了向其他系统设计的代码提供向后兼容性,这些系统具有除ncurses之外的curses实现。

答案 3 :(得分:0)

在我的(fedora 11)PC上/usr/lib/libcurses.so包含:“INPUT(-lncurses)”。我认为这意味着两个表单(-lcurses,-lncurses)是等效的。