p
2 февраля 2019 г. 1:52

Как собрать curl + openssl без зависимостей ?

openssl, curl, static link, runtime

Всем привет, хочу собрать статическую библиотеку curl + openssl без зависимостей, Что я сделал:

  1. Скачал исходники curl, открыл проект в visual studio VC15/curl-all.sln
  2. Выбрал в конфигурации решений "Libs release - lib Openssl"
  3. Настроил проект, добавил пути к заголовочным файлам - C:\OpenSSL-Win64\include, установил путь к библиотекам C:\OpenSSL-Win64\lib и в разделе Компоновщик - добавил зависимости:

ws2_32.lib
wldap32.lib
openssl.lib
libssl.lib
libcrypto.lib

Проект собрался без ошибок, на выходи получил libcurl.lib
Создал простое консольное приложение:

  1. #include <iostream>
  2. #include <stdio.h>
  3.  
  4. #define CURL_STATICLIB
  5. #include "curl/curl.h"
  6.  
  7. #pragma comment(lib, "curl/libcurl.lib")
  8.  
  9. int main()
  10. {
  11. curl_global_init(CURL_GLOBAL_DEFAULT);
  12. CURL *curl = curl_easy_init();
  13. if (curl) {
  14. CURLcode res;
  15. curl_easy_setopt(curl, CURLOPT_URL, "https://www.google.com/");
  16. curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, true);
  17. curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
  18. curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
  19. curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2L);
  20. res = curl_easy_perform(curl);
  21.  
  22. curl_easy_cleanup(curl);
  23. }
  24. curl_global_cleanup();
  25.  
  26. system("pause");
  27. }

На моей машине все работает отлично, а на другой где нет ssl, не закусается, требует два dll - libcrypto-1_1-x64, libssl-1_1-x64

Как мне собрать без зависимостей ? на выходе должен выйти один исполняемый файл.

2

Вам это нравится? Поделитесь в социальных сетях!

2
Evgenii Legotckoi
  • 4 февраля 2019 г. 2:13
  • Ответ был помечен как решение.

Добрый день!

Не знаю, что у вас там конкретно с curl, но проблема с openssl, в том, что у вас по ходу динамические объектные библиотеки все-таки. Имел такую проблему с openssl либами, пока не нашёл именно статические библиотеки, после этого нормально скомпилировалось и не требовало dll библиотеки.

    p
    • 5 февраля 2019 г. 20:30

    Да, действительно, пересобрал со статическими библиотеками и на другой машине запустилось без dll

    В итоге для сборки curl + openssl использовал следующие зависимости:

    1. ws2_32.lib
    2. wldap32.lib
    3. Advapi32.lib
    4. User32.lib
    5. crypt32.lib
    6. openssl.lib
    7. libssl64MT.lib
    8. libcrypto64MT.lib

      Комментарии

      Только авторизованные пользователи могут публиковать комментарии.
      Пожалуйста, авторизуйтесь или зарегистрируйтесь