Грешка при инсталирането на cURL на Linux машина

ИГНОРИРАЙТЕ ЦЯЛОТО ТОВА НЕЩО, ОСТАВЯТЕ ТУК ЗА КОНТЕКСТ, ВИЖТЕ ВЪПРОСА В СЪМ КРАЯ.

Това е доста странна ситуация, в която се поставих. Инсталирах 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 не е бил свързан правилно или нещо подобно. Колко лошо прецаках инсталирането на curl библиотеката?

РЕДАКТИРАНЕ: НАМЕРЕН ОТГОВОР, НОВ ВЪПРОС

След като отделих време да напиша всичко това, намерих подобен въпрос с отговор „включете -lcurl“ и моите програми се компилираха. Защо е необходимо това, когато вече включвам заглавния файл curl/curl.h?


person Cullen S    schedule 24.03.2014    source източник


Отговори (1)


Защо е необходимо това, когато вече включвам заглавния файл curl/curl.h?

Заглавният файл curl.h казва на компилатора прототипите и друга информация за функциите в curl библиотеката, а -lcurl казва на линкера къде да търси дефиницията на тези функции.

person Lee Duhem    schedule 24.03.2014