GCC ld:找不到-lcurses

时间:2015-11-29 13:47:59

标签: gcc ld curses

我正在尝试使用make install,我收到错误:

cannot find -lcurses

在我的 / usr / lib / curses / 中,我有两个文件: libcurses.so libcurses.a

所以我确实有那个库,gcc就是看不到它。我已经阅读了几乎所有我能找到但却无法完成这项工作的内容。

任何帮助将不胜感激。

这是输出:

/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib/libcurses.so when searching for -lcurses
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: cannot find -lcurses
collect2: error: ld returned 1 exit status
Makefile:125: recipe for target 'samtools' failed
make: *** [samtools] Error 1

注意:我已经阅读了本网站上的每个类似主题,所以请不要将其标记为重复。

2 个答案:

答案 0 :(得分:2)

链接器说:

/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: \
skipping incompatible /usr/lib/libcurses.so when searching for -lcurses
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: cannot find -lcurses

您正在执行64位构建,但是唯一的libcurses.so链接器 可以找到32位,所以它被跳过。

您的几个帖子中不清楚这个32位/usr/lib/libcurses.so是如何得到的 那里。 official latest openSUSE {{3}} curses运行时包是libncurses5-5.9-53.4.x86_64.rpm。官方最新的开发包是ncurses-devel-5.9-53.4.x86_64.rpm。 如果您安装这些软件包中的任何一个,它们不会在/usr/lib下放置任何32位二进制文​​件,所以我猜测 你的/usr/lib/libcurses.so以某种非正统的方式到达那里。

删除此/usr/lib/libcurses.so。从您的发行版的软件包管理器安装ncurses-devel rpm, e.g。zypper install ncurses-devel。要确保您已成功完成,请检查之后是否存在/usr/lib64/libncurses.so。 然后在makefile中更改:

LIBCURSES=  -lcurses

为:

LIBCURSES=  -lncurses

您会发现此更改在samtools INSTALL文件的第3段中有所描述。

答案 1 :(得分:1)

您需要安装ncurses的开发库,即ncurses-devel(对于SuSE)。

如果没有开发库,ncurses的共享库只会作为运行时文件出现。

ncurses开发包安装文件或符号链接以使这些选项有效:-lcurses-lncurses(因为前者是标准的)。它还会安装文件以生成-lncursesw链接,但OP未使用该链接。

该消息

skipping incompatible /usr/lib/libcurses.so

使OP似乎从其他系统复制文件而不是安装OpenSuSE包。

SuperUser中的额外问题(GCC ld: can't find -lcurses)提供了更多信息,但还不足以查看文件/usr/lib/libcurses.so不兼容的原因。但是,它可能与开发包相冲突。