Сборка libcurl stati c с использованием cmake не работает - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь собрать libcurl статически, поэтому я могу перенести его на aws лямбду.

Пока я пробовал:

 1. I download curl from https://curl.haxx.se/download.html to build from source.
 2. ./configure --disable-shared
 3. make
 4. sudo make install 

Ниже мой CmakeLists.txt

cmake_minimum_required (ВЕРСИЯ 3.1)

set(CMAKE_CXX_STANDARD 11)
project(executable LANGUAGES CXX)

add_definitions( -DCURL_STATICLIB )

set(LCURL_TARGET "<path to my downloaded curl library>")
set(CURL_LIBRARY_DIRS "${LCURL_TARGET}/lib/")
set(CURL_INCLUDE_DIRS "${LCURL_TARGET}/include/")


find_package(CURL REQUIRED) 
include_directories(${CURL_INCLUDE_DIRS})
link_directories(${CURL_TARGET} )

add_executable(${PROJECT_NAME} "execute_code.cpp")
target_link_libraries(executable PRIVATE curl)

Я также пытался с

target_link_libraries(executable PRIVATE ${CURL_LIBRARY_DIRS})

Я пытался: C - программа компиляции Cmake с libcurl а также.

Мой код исполнения. cpp. Хотя это только для тестирования.

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

using namespace std;

int main(int argc, char** argv) {
  CURL *curl;
  CURLcode res;
  curl = curl_easy_init();

  if(curl) {
    /* First set the URL that is about to receive our POST. This URL can
       just as well be a https:// URL if that is what should receive the
       data. */ 
    curl_easy_setopt(curl, CURLOPT_URL, "https://www.google.com");
    /* Now specify the POST data */ 
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=daniel&project=curl");

    /* Perform the request, res will get the return code */ 
    res = curl_easy_perform(curl);
    /* Check for errors */ 
    if(res != CURLE_OK)
      fprintf(stderr, "curl_easy_perform() failed: %s\n",
              curl_easy_strerror(res));

    /* always cleanup */ 
    curl_easy_cleanup(curl);
  }
  curl_global_cleanup();

Он собирается без проблем, но когда я перемещаю его в AWS Lambda, он выдает ошибку: b './ исполняемый файл: / usr / lib64 / libcurl.so.4: информация о версии недоступна (требуется ./executable)

Поскольку он использует файл .so, я решил, что он не статически связывается.

I Я новичок в Cmake и C ++. Не могли бы вы помочь, что я делаю не так здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...