使用提供给我的预构建make文件进行编译时,遇到以下错误:
/bin/ld: cannot find -lcurl
collect2: error: ld returned 1 exit status
make[1]: *** [dis.exe] Error 1
make[1]: Leaving directory 'intg_builds/Test2'
根据我的理解,链接器在链接时无法找到curl文件。在搜索文件系统后,我在/ usr / bin /中找到了curl,并在/ bin /中找到了它的符号链接。 Curl甚至和ld在同一个目录中。
以下是make文件中链接到curl的代码:
EXTRALIBS= /usr/local/lib/libxerces-c.a -lcurl
操作系统是Centos 7 64位。
Curl是版本7.29.0(x86_64-redhat-linux-gnu)libcur / 7.29.0 NSS / 3.28.4 zlib / 1.2.7 libidn / 1.28 libssh2 / 1.4.3
Xerces-c是版本3.1.1
我应该在哪里有一个卷曲的符号链接,以便链接器正确找到它?
请注意:我不鼓励在此时更改make文件。如果我们可以复制这个make文件的环境,那对我的目的会更好。
更多信息: 在/ usr / lib64 /中有2个libcurl.so文件。一个是" libcurl.so.4"另一个是" libcurl.so.4.3.0"
更新: 在建议安装libcurl-devel后,错误已更改。现在我在同一个包中收到了数百个未定义的引用错误。示例如下:
/home/~/Downloads/git/Foo/Build_Tools/HLA/trunk/xerces-c/xerces-c-3.1.1/src/./sercesc/util/RefHashTableOf.c:415: undefined reference to 'operator delete(void*, unsigned long)'
/usr/local/lib/libxerces-c.a(IGXMLScanner2.o):/home/~/Downloads/git/Foo/Build_Tools/HLA/trunk/xerces-c/xerces-c-3.1.1/src/./xercesc/util/RefHashTableOf.c:223: more undefined references to 'operator delete(void*, unsigned long)' follow
它们似乎引用了delete或uset_<Bar>_50
,它们看起来像属性或全局变量,转码器函数和变量等。它几乎感觉它正在尝试连接到错误的库。
答案 0 :(得分:0)
/ bin / ld:找不到-lcurl
-lcurl
表示'libcurl。所以'并且您只获得了运行时lib libcurl.so.4 -> libcurl.so.4.3.0
# yum install libcurl-devel
:提供使用curl
→
/usr/bin/curl-config, /usr/include/curl/{headers.h}, /usr/lib64/libcurl.so, /usr/lib64/pkgconfig/libcurl.pc