Почему libcurl с SSL выдает неопределенные ссылочные ошибки на Windows? - PullRequest
0 голосов
/ 29 января 2020

Я уже давно пытаюсь настроить libcurl. Предварительно собранные двоичные файлы, доступные на официальном сайте, не работали для меня (я застрял с некоторыми странными ошибками обертки LTO; скорее всего, это произошло из-за несоответствия версий компилятора). Поэтому мне пришлось с нуля собрать как OpenSSL, так и libcurl. Когда я создаю его без SSL, он работает идеально, без сбоев (конечно, ни cURL CLI, ни libcurl не позволяют мне использовать https). Но в этом примере .

он работает правильно с http. Затем я создал libcurl с SSL. Но когда я пытаюсь проверить его на том же примере, я получаю всевозможные неопределенные ошибки ссылок:

||=== Build: Debug in TestCurl (compiler: GNU GCC Compiler) ===|
dependencies\SSL\lib\libssl.a(bio_ssl.o):bio_ssl.c|| undefined reference to `BIO_s_connect'|
dependencies\SSL\lib\libssl.a(bio_ssl.o):bio_ssl.c|| undefined reference to `BIO_s_connect'|
dependencies\SSL\lib\libssl.a(ssl3_record.o):ssl3_record.c|| undefined reference to `COMP_expand_block'|
dependencies\SSL\lib\libssl.a(ssl3_record.o):ssl3_record.c|| undefined reference to `COMP_compress_block'|
dependencies\SSL\lib\libssl.a(ssl3_record.o):ssl3_record.c|| undefined reference to `COMP_expand_block'|
dependencies\SSL\lib\libssl.a(ssl3_record.o):ssl3_record.c|| undefined reference to `COMP_expand_block'|
dependencies\SSL\lib\libssl.a(ssl_ciph.o):ssl_ciph.c|| undefined reference to `COMP_get_type'|
dependencies\SSL\lib\libssl.a(ssl_ciph.o):ssl_ciph.c|| undefined reference to `COMP_get_name'|
dependencies\SSL\lib\libssl.a(ssl_ciph.o):ssl_ciph.c|| undefined reference to `EVP_enc_null'|
dependencies\SSL\lib\libssl.a(ssl_ciph.o):ssl_ciph.c|| undefined reference to `COMP_get_type'|
dependencies\SSL\lib\libssl.a(ssl_ciph.o):ssl_ciph.c|| undefined reference to `COMP_get_name'|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| undefined reference to `COMP_CTX_free'|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| undefined reference to `COMP_CTX_free'|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| undefined reference to `COMP_CTX_free'|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| undefined reference to `COMP_CTX_free'|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| undefined reference to `COMP_CTX_free'|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| more undefined references to `COMP_CTX_free' follow|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| undefined reference to `X509_LOOKUP_hash_dir'|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| undefined reference to `OCSP_SINGLERESP_get1_ext_d2i'|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| undefined reference to `CT_POLICY_EVAL_CTX_new'|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| undefined reference to `CT_POLICY_EVAL_CTX_set1_cert'|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| undefined reference to `CT_POLICY_EVAL_CTX_set1_issuer'|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| undefined reference to `CT_POLICY_EVAL_CTX_set_shared_CTLOG_STORE'|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| undefined reference to `CT_POLICY_EVAL_CTX_set_time'|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| undefined reference to `CT_POLICY_EVAL_CTX_free'|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| undefined reference to `CT_POLICY_EVAL_CTX_free'|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| undefined reference to `COMP_CTX_free'|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| undefined reference to `COMP_CTX_free'|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| undefined reference to `COMP_CTX_free'|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| undefined reference to `COMP_CTX_free'|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| undefined reference to `COMP_CTX_get_method'|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| undefined reference to `COMP_CTX_get_method'|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| undefined reference to `X509_STORE_set_default_paths'|
dependencies\SSL\lib\libssl.a(ssl_lib.o):ssl_lib.c|| undefined reference to `X509_STORE_load_locations'|
dependencies\SSL\lib\libssl.a(t1_lib.o):t1_lib.c|| undefined reference to `BN_get_rfc3526_prime_3072'|
dependencies\SSL\lib\libssl.a(t1_lib.o):t1_lib.c|| undefined reference to `BN_get_rfc3526_prime_8192'|
dependencies\SSL\lib\libssl.a(tls_srp.o):tls_srp.c|| undefined reference to `SRP_Calc_B'|
dependencies\SSL\lib\libssl.a(tls_srp.o):tls_srp.c|| undefined reference to `SRP_get_default_gN'|
dependencies\SSL\lib\libssl.a(tls_srp.o):tls_srp.c|| undefined reference to `SRP_create_verifier_BN'|
dependencies\SSL\lib\libssl.a(tls_srp.o):tls_srp.c|| undefined reference to `SRP_Verify_A_mod_N'|
dependencies\SSL\lib\libssl.a(tls_srp.o):tls_srp.c|| undefined reference to `SRP_Calc_u'|
dependencies\SSL\lib\libssl.a(tls_srp.o):tls_srp.c|| undefined reference to `SRP_Calc_server_key'|
dependencies\SSL\lib\libssl.a(tls_srp.o):tls_srp.c|| undefined reference to `SRP_Verify_B_mod_N'|
dependencies\SSL\lib\libssl.a(tls_srp.o):tls_srp.c|| undefined reference to `SRP_Calc_u'|
dependencies\SSL\lib\libssl.a(tls_srp.o):tls_srp.c|| undefined reference to `SRP_Calc_x'|
dependencies\SSL\lib\libssl.a(tls_srp.o):tls_srp.c|| undefined reference to `SRP_Calc_client_key'|
dependencies\SSL\lib\libssl.a(tls_srp.o):tls_srp.c|| undefined reference to `SRP_check_known_gN_param'|
dependencies\SSL\lib\libssl.a(tls_srp.o):tls_srp.c|| undefined reference to `SRP_Calc_A'|
dependencies\SSL\lib\libssl.a(s3_enc.o):s3_enc.c|| undefined reference to `COMP_CTX_free'|
dependencies\SSL\lib\libssl.a(s3_enc.o):s3_enc.c|| undefined reference to `COMP_CTX_new'|
||More errors follow but not being shown.|
||Edit the max errors limit in compiler options...|
||=== Build failed: 50 error(s), 0 warning(s) (0 minute(s), 2 second(s)) ===|

Ниже приведены сведения о моей системе:

  • Компилятор : g ++ (MinGW.org G CC -6.3.0-1) 6.3.0
  • libcurl : 7.68.0
  • OpenSSL : 1.1.1d
  • ОС : Microsoft Windows 10 Pro, 10.0.18362 N / A Build 18362

Это Команды, которые выдает IDE (Code :: Blocks):

mingw32-g++.exe -Wall -lssl -lcrypto -DCURL_STATICLIB -g -Idependencies\CURL\include -c G:\App\TestCurlCB\src\Manager.cpp -o obj\Debug\src\Manager.o

mingw32-g++.exe  -o bin\Debug\TestCurl.exe obj\Debug\src\Manager.o   dependencies\CURL\lib\libcurl.a dependencies\SSL\lib\libcrypto.a dependencies\SSL\lib\libssl.a "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\Wldap32.Lib" "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\WS2_32.Lib"
...