我正在尝试使用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
注意:我已经阅读了本网站上的每个类似主题,所以请不要将其标记为重复。
答案 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
不兼容的原因。但是,它可能与开发包相冲突。