ld在运行make文件时找不到库卷曲

时间:2018-05-09 21:30:30

标签: curl makefile linker centos7 ld

使用提供给我的预构建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,它们看起来像属性或全局变量,转码器函数和变量等。它几乎感觉它正在尝试连接到错误的库。

1 个答案:

答案 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