我正在学习C并使用ncurses lib。我看过对-lcurses和-lcucurses的引用,但我还没有发现任何差异(编译时都有效)。
感谢帮助!
答案 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)是等效的。