忽略了这件事,离开这里完成了背景,不顾一切地看问题。
这是我自己投入的一个相当奇怪的情况。我安装了cURL,除了代码本身外,一切似乎都有效。如果我试试
man curl_easy_init
该功能的手册页出现了。我试试
curl -V
和
curl 7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp smtp smtps telnet tftp
Features: GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP
出现,这意味着我安装正确。我甚至去了/ usr / include,curl / curl.h文件就在那里。现在,当我尝试一个非常简单的程序时
#include <stdio.h>
#include <curl/curl.h>
int main(void)
{
CURL * curl;
CURLcode res;
curl = curl_easy_init();
if(curl)
{
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
return 0;
}
在编译时,我得到错误这些错误:
gcc -Wall test.c
test.c: In function ‘main’:
test.c:7:12: warning: variable ‘res’ set but not used [-Wunused-but-set-variable]
/tmp/ccT4IJ5R.o: In function `main':
test.c:(.text+0x99): undefined reference to `curl_easy_init'
test.c:(.text+0xc6): undefined reference to `curl_easy_setopt'
test.c:(.text+0xd2): undefined reference to `curl_easy_perform'
test.c:(.text+0xe1): undefined reference to `curl_easy_cleanup'
collect2: ld returned 1 exit status
即使我可以对这些功能中的任何一个执行手册页请求,但它无法正确找到它们。这意味着curl.h文件没有正确链接,或类似的东西。我搞砸安装卷曲库有多糟糕?
编辑:找到答案,新问题
在我花时间把这一切写完后,我发现了一个类似的问题,回答是&#34;包括-lcurl&#34;我的程序编译。当我已经包含头文件curl / curl.h时,为什么这是必要的?
答案 0 :(得分:2)
为什么在我已经包含头文件curl / curl.h时需要这个?
头文件curl.h
告诉编译器有关curl库中函数的原型和其他信息,-lcurl
告诉链接器在哪里查找这些函数的定义。