p
Feb. 2, 2019, 1:52 a.m.

Как собрать 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

Do you like it? Share on social networks!

2
Evgenii Legotckoi
  • Feb. 4, 2019, 2:13 a.m.
  • The answer was marked as a solution.

Добрый день!

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

    p
    • Feb. 5, 2019, 8:30 p.m.

    Да, действительно, пересобрал со статическими библиотеками и на другой машине запустилось без 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

      Comments

      Only authorized users can post comments.
      Please, Log in or Sign up
      • Last comments
      • AK
        April 1, 2025, 11:41 a.m.
        Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
      • Evgenii Legotckoi
        March 9, 2025, 9:02 p.m.
        К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
      • VP
        March 9, 2025, 4:14 p.m.
        Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
      • ИМ
        Nov. 22, 2024, 9:51 p.m.
        Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
      • Evgenii Legotckoi
        Oct. 31, 2024, 11:37 p.m.
        Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup