我在用C ++创建Makefile时遇到问题。我需要将readline库与我的代码链接,但我一直收到此错误。
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld: cannot find -lreadline collect2: error: ld returned 1 exit status make: *** [Makefile:5: tokenizer] Error 1
我目前在cygwin64 / usr / include文件夹中有我的readline文件夹,该文件夹是从GNU Readline库站点下载的。
在我的tokenizer.cpp代码中,我也有#include <readline/readline.h>
,但是我以前一直遇到错误,方法是将我的readline文件夹放在现在的目录中,此错误已得到解决,因此我认为这是正确的放置它直到出现此错误。
在我的cygwin / usr目录中,我没有lib目录,因此我不确定将readline文件夹移动或复制到另一个目录是否可以解决此问题。除此之外,我不太确定除了我的Makefile本身之外还有什么问题
CC=gcc
tokenizer : tokenizer.cpp
$(CC) -o $@ -g $< -lreadline.c
任何帮助或建议将不胜感激!
答案 0 :(得分:1)
使用cygcheck
查找包含正确导入库的软件包(对于共享库,以dll.a
结尾)
$ cygcheck -p usr/lib/libreadline.dll.a
Found 3 matches for usr/lib/libreadline.dll.a
...
libreadline-devel-7.0.3-3 - libreadline-devel: GNU readline and history libraries (development)
使用安装程序安装libreadline-devel
答案 1 :(得分:0)
要使您的Cygwin生活更轻松,请使用apt-cyg下载所需的libreadline
依赖项:
apt-cyg install libreadline7 libreadline-devel mingw64-i686-readline mingw64-x86_64-readline