【问题标题】:Linking returns error for custom installed libcurl library on Debian链接在 Debian 上为自定义安装的 libcurl 库返回错误
【发布时间】:2018-07-15 15:15:52
【问题描述】:

我正在使用运行 Stretch 并使用 g++ 构建的 Debian 系统。最新的 Debian libcurl package 是 libcurl 版本 7.38.0。我正在尝试通过关注this sample 来实现多部分表单发布;它使用在 libcurl 版本 7.56.0 中添加的curl_mime_init。我自定义安装了最新版本的库,并且能够初始化 curl 对象,但链接器返回 curl_mime_init() 错误。

#include<iostream>
#include <curl/curl.h>
using namespace std;

int main(){
   CURL *curl;
   curl_mime *form = NULL;

   curl_global_init(CURL_GLOBAL_ALL);
   curl = curl_easy_init();

   if(curl) 
      form = curl_mime_init(curl);
}

我没有将库安装在正确的 /usr/local 文件夹中。该程序是用

构建的
g++ test.cpp -o test 
-I/home/Documents/curl-master/include 
-L/home/Documents/curl-master  -lcurl

该示例表明确切的代码尚未经过验证可以正常工作。可能是什么问题呢?

【问题讨论】:

    标签: libcurl


    【解决方案1】:

    我认为这可能是您的非标准安装位置的原因。如果我在 Ubuntu 上构建相同的库(所以这是 g++ 版本(Ubuntu 7.3.0-16ubuntu3) 7.3.0)但我不安装它(所以我只做 configuremake)然后参考它构建测试:

    g++ test.cpp -o test -I/home/fin/Desktop/curl-7.61.0/include -L/home/fin/Desktop/curl-7.61.0/lib/.libs  -lcurl
    

    然后它链接正常。

    我应该注意我没有将任何参数传递给configure

    【讨论】:

    • GIT-INFO 中的说明是运行 buildconf、configure 和 make。运行 buildconf 之前没有配置文件。
    • 我没有从 git 中提取,我从 libcurl 网站解压了 7.61.0 tarball。这确实包含一个配置文件,我不必构建配置文件。
    • 问题不是以 lib/.libs 结束 -L 库路径
    • 存在运行时错误:'symbol lookup error: ./test: undefined symbol: curl_mime_init'
    • 如果在您的库路径中未找到 libcurl,则您会遇到链接器错误,说明它找不到 libcurl,而不是找不到该特定符号。因为它正在查找库,但不是该符号,这表明它正在查找一个没有该符号的库。所以推测它正在获取系统范围的 libcurl.so 或 libcurl.a 您可以通过显式传递库名称来强制 gcc 使用特定库: g++ test.cpp -o test /home/ foo/bar/libcurl.so
    猜你喜欢
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多