我刚刚从源代码安装了
我觉得奇怪的是错误信息指向了
我的机器上真的有多个
ncurses
,Makefile日志显示一切都很正常。两个文件libncurses.a
和libncurses++.a
都存在,并且使用-lncurses
或-lncurses++
不会引发“无法找到-lX”的错误。$ ls -al /usr/lib/x86_64-linux-gnu/*curses*
lrwxrwxrwx 1 root root 12 Feb 19 2016 /usr/lib/x86_64-linux-gnu/libcurses.a -> libncurses.a
lrwxrwxrwx 1 root root 13 Feb 19 2016 /usr/lib/x86_64-linux-gnu/libcurses.so -> libncurses.so
-rw-r--r-- 1 root root 298812 Feb 19 2016 /usr/lib/x86_64-linux-gnu/libncurses.a
-rw-r--r-- 1 root root 171456 Feb 19 2016 /usr/lib/x86_64-linux-gnu/libncurses++.a
-rw-r--r-- 1 root root 31 Feb 19 2016 /usr/lib/x86_64-linux-gnu/libncurses.so
奇怪的是,当尝试编译一个像这样的虚拟示例时
#include <cursesapp.h>
#include <cursesm.h>
#include <cursesf.h>
int main() {
NCursesPanel *mystd = new NCursesPanel();
return 0;
}
使用 g++ src/main.cpp -o main -lncurses++
会在 libcurses++
中抛出一长串链接错误。即使使用额外的 -lncurses
也无济于事。以下是一个小节选:
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libncurses++.a(cursesw.o): In function `NCursesWindow::initialize() [clone .part.11]':
(.text+0xd0): undefined reference to `noecho'
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libncurses++.a(cursesw.o): In function `NCursesWindow::scanw(char const*, ...)':
(.text+0x214): undefined reference to `vwscanw'
我觉得奇怪的是错误信息指向了
/usr/lib/gcc/5
,也许我的机器上有两个 libncurses
,但我找不到它。我的机器上真的有多个
ncurses
的问题吗?我该如何进一步调查并解决链接问题?
g++ src/main.cpp -o main -lncurses++ -lncurses
? - Jean-François Fabre