GCC ld:找不到-lcurses

GCC ld: can't find -lcurses

我正在尝试使用 make install,但出现错误:

cannot find -lcurses

在我的 /usr/lib/curses/ 中,我有两个文件:libcurses.solibcurses.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

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

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

没有 development 库,ncurses 的共享库仅作为 runtime 文件存在。

ncurses 开发包安装文件或符号 links 以使这些选项起作用:-lcurses-lncurses(因为前者是标准的)。它还会安装文件以制作 -lncursesw link,但 OP 未使用该文件。

那个消息

skipping incompatible /usr/lib/libcurses.so

看起来好像 OP 从其他系统复制文件而不是安装 OpenSuSE 包。

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

链接器说:

/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 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, 例如zypper install ncurses-devel。为确保您已成功完成,请检查 /usr/lib64/libncurses.so 之后是否存在。 然后在您的 makefile 中更改:

LIBCURSES=  -lcurses

至:

LIBCURSES=  -lncurses

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