GCC ld:找不到-lcurses
GCC ld: can't find -lcurses
我正在尝试使用 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
注意:我已经阅读了本网站上所有类似的主题,所以请不要将其标记为重复。
您需要安装 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 段中描述了此更改。
我正在尝试使用 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
注意:我已经阅读了本网站上所有类似的主题,所以请不要将其标记为重复。
您需要安装 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 段中描述了此更改。