LINUX.ORG.RU

ошибка: collect2: error: ld returned 1 exit status

 


0

1

Работаю через QT Creator. Создал проект, назвал test.

1) Скачал библиотеку curl

2) Скопировал из распакованного архива библиотеки curl все файлы из папки /home/n199a/curl/include/ в папку /usr/include/curl

n199a@n199a:~$ ls /usr/include/curl
curl.h     easy.h       Makefile.in  multi.h        system.h
curlver.h  Makefile.am  mprintf.h    stdcheaders.h  typecheck-gcc.h

3) В файл test.pro проекта дописал:

LIBS += -lcurl
4) Пытаюсь скомпилировать и выдается ошибка:
ошибка: collect2: error: ld returned 1 exit status 

У меня Linux Mint. В ней по умолчанию предустановлена библиотека curl, но почему её не было в папке /usr/include/ ? Сам код программы:

//подключаем необходимые заголовочные файлы
#include <string>
#include <iostream>
#include <curl/curl.h>
//подключаем стандартное пространство имен
using namespace std;
//объявляем буфер, для хранения возможной ошибки, размер определяется в самой библиотеке
static char errorBuffer[CURL_ERROR_SIZE];
//объялвяем буфер принимаемых данных
static string buffer;
//функция обратного вызова
static int writer(char *data, size_t size, size_t nmemb, string *buffer)
{
  //переменная - результат, по умолчанию нулевая
  int result = 0;
  //проверяем буфер
  if (buffer != NULL)
  {
    //добавляем к буферу строки из data, в количестве nmemb
    buffer->append(data, size * nmemb);
    //вычисляем объем принятых данных
    result = size * nmemb;
  }
  //вовзращаем результат
  return result;
}

//главная функция
int main(void)
{
    //необходимые CURL объекты
    CURL *curl;
    CURLcode result;
    //инициализируем curl
    curl = curl_easy_init();
    //проверяем результат инициализации
    if (curl)
    {
      //задаем все необходимые опции
      //определяем, куда выводить ошибки
      curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errorBuffer);
      //задаем опцию - получить страницу по адресу http://google.com
      curl_easy_setopt(curl, CURLOPT_URL, "google.com");
      //указываем прокси сервер
      curl_easy_setopt(curl, CURLOPT_PROXY, "proxy:8080");
      //задаем опцию отображение заголовка страницы
      curl_easy_setopt(curl, CURLOPT_HEADER, 1);
      //указываем функцию обратного вызова для записи получаемых данных
      curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
      //указываем куда записывать принимаемые данные
      curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
      //запускаем выполнение задачи
      result = curl_easy_perform(curl);
      //проверяем успешность выполнения операции
      if (result == CURLE_OK)
      //выводим полученные данные на стандартный вывод (консоль)
        cout << buffer << "\n";
      else
        //выводим сообщение об ошибке
        cout << "Ошибка! " << errorBuffer << endl;
  }
  //завершаем сессию
  curl_easy_cleanup(curl);
  return 0;
}



Последнее исправление: n199a (всего исправлений: 2)

Ты сделал какую-то дичь. Удали то, что ты закинул в /usr и поставь пакет libcurl-dev из репозитория или как там он в Mint'е называется.

и выдается ошибка:

Реальная ошибка написана чуть выше, смотри лог компиляции.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от EXL
Пакет libcurl-dev — виртуальный, его функции предоставляются пакетами:
  libcurl4-openssl-dev 7.58.0-2ubuntu3.1
  libcurl4-nss-dev 7.58.0-2ubuntu3.1
  libcurl4-gnutls-dev 7.58.0-2ubuntu3.1
Вы должны явно указать, какой именно вы хотите установить.

Подскажи, какой устанавливать нужно?

n199a
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.