【问题标题】:Can't compile in Linux with curl - undefined reference无法使用 curl 在 Linux 中编译 - 未定义的参考
【发布时间】:2012-08-06 17:51:25
【问题描述】:

我正在尝试使用 curl lib 在 Linux(ubuntu) 中编译一个 c++ 示例,但我得到了对“curl_easy_init”的未定义引用

编译命令:

gcc -L/usr/local/lib -lcurl -I/usr/local/include -o request request.cpp

结果:

/tmp/ccZwDiCf.o: In function 'main':<br>
request.cpp:(.text+0xa): undefined reference to 'curl_easy_init'<br>
request.cpp:(.text+0x31): undefined reference to 'curl_easy_setopt'<br>
request.cpp:(.text+0x3d): undefined reference to 'curl_easy_perform'<br>
request.cpp:(.text+0x54): undefined reference to 'curl_easy_strerror'<br>
request.cpp:(.text+0x7b): undefined reference to 'curl_easy_cleanup'<br>
collect2: ld returned 1 exit status

代码:

#include <curl/curl.h>
#include <stdio.h>

int main(int argc, char* argv[]){
    CURL *curl;
    CURLcode res;

    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "http://google.com");
        res = curl_easy_perform(curl);
        if(res!=CURLE_OK) 
            fprintf(stderr, "curl_easy_perform() failed: %s\n",curl_easy_strerror(res));
        curl_easy_cleanup(curl);
    }
    return 0;
}

【问题讨论】:

  • -lcurl 放在编译器命令的末尾。见stackoverflow.com/questions/9966959/…
  • 另请注意,您不需要-L/usr/local/lib-I/usr/local/include
  • 如果它是c++代码,你建议你应该使用g++,而不是gcc
  • 如果你静态链接 curl (curl.a),你需要在包含 curl 头文件之前定义CURL_STATICLIB;不确定这是否是您的问题。
  • 谢谢大家。只需在命令末尾使用 -l 就可以了。

标签: c++ linux curl


【解决方案1】:

回答只是为了结束这个问题。

要恢复,您必须将 -lcurl 选项放在编译命令行的末尾。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 2022-10-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多