【发布时间】:2018-10-20 02:27:39
【问题描述】:
使用提供给我的预构建 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在同一个目录。
这是链接到 curl 的 make 文件中的代码:
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 版
我应该在哪里有一个 curl 的符号链接,以便链接器正确找到它?
请注意:不鼓励我此时更改 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,它们看起来像属性或全局变量、转码器函数和变量等。几乎感觉像是在尝试连接到错误的库。
【问题讨论】:
标签: curl makefile linker centos7 ld