Создайте автономный бинарный файл, используя Qt с поддержкой OpenSSL - PullRequest
0 голосов
/ 14 октября 2019

Мне нужно создать отдельное двоичное приложение с поддержкой OpenSSL. Для разработки я использую Qt Framework.

Проблема, с которой я сталкиваюсь, заключается в том, что при тестировании моего приложения на тестовой машине у меня нет поддержки SSL.

Что у меня естьdone ( лучше спросить, что я не пробовал ):

Я скомпилировал Qt с OpenSSL 1.1.1d, скачанный с здесь (перекомпилирован около 15 разс разными опциями конфигурации, занимающими около 6 часов на компиляцию - много потерянного времени).

Для компиляции статического Qt я использовал скрипт this (слегка адаптированный из this скрипт из Qt, включающий количество используемых потоков и указывающий OpenSSL HOME).

M варианты конфигурации:

cmd /C "configure.bat -static -debug-and-release -platform win32-g++ -prefix $QtDir `
        -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -sql-sqlite -ssl -openssl -I $($OPENSSL_HOME)\include -L$($OPENSSL_HOME)\lib\MinGW`
        -opensource -confirm-license `
        -make libs -nomake tools -nomake examples -nomake tests -v"
    cmd /C "mingw32-make -k -j$($threads)"

макет каталога OpenSSL_HOME

    Directory: C:\OpenSSL\OpenSSL-Win32


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       2019/09/30     07:27                bin
d-----       2019/09/30     07:27                exp
d-----       2019/09/30     07:27                include
d-----       2019/09/30     07:27                lib
d-----       2019/09/30     07:27                tests
-a----       2019/09/11     18:10             89 acknowledgements.txt
-a----       2019/09/11     18:10            752 authors.txt
-a----       2019/09/11     18:10         596279 changes.txt
-a----       2019/09/11     18:10           6408 c_rehash.pl
-a----       2019/09/11     18:10             86 faq.txt
-a----       2019/09/11     18:10        2515456 libcrypto-1_1.dll
-a----       2019/09/11     18:10         530432 libssl-1_1.dll
-a----       2019/09/11     18:10           6246 license.txt
-a----       2019/09/11     18:10          43136 news.txt
-a----       2019/09/11     18:10           3251 readme.txt
-a----       2019/09/30     07:27          96904 unins000.dat
-a----       2019/09/30     07:26         730789 unins000.exe

Directory: C:\OpenSSL\OpenSSL-Win32\lib

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       2019/09/30     07:27                MinGW
d-----       2019/09/30     07:27                VC
-a----       2019/09/11     18:10           1840 capi.lib
-a----       2019/09/11     18:10           1866 dasync.lib
-a----       2019/09/11     18:10         985224 libapps.lib
-a----       2019/09/11     18:10         109020 libcrypto.def
-a----       2019/09/11     18:10        1013446 libcrypto.lib
-a----       2019/09/11     18:10       34718436 libcrypto_static.lib
-a----       2019/09/11     18:10          14033 libssl.def
-a----       2019/09/11     18:10         122290 libssl.lib
-a----       2019/09/11     18:10        7058838 libssl_static.lib
-a----       2019/09/11     18:10         448842 libtestutil.lib
-a----       2019/09/11     18:10           1734 openssl.lib
-a----       2019/09/11     18:10           1892 ossltest.lib
-a----       2019/09/11     18:10           1880 padlock.lib
-a----       2019/09/11     18:10           1722 uitest.lib

Directory: C:\OpenSSL\OpenSSL-Win32\lib\MinGW

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2019/09/11     18:11        3347286 libcrypto.a
-a----       2019/09/11     18:10         109020 libcrypto.def
-a----       2019/09/11     18:11         385126 libssl.a
-a----       2019/09/11     18:10          14033 libssl.def

При запуске автономной .exe на новой установке Windows 7/10 вызов QSslSocket::supportSsl() имеет следующий эффект.

  • Это было проверено с OpenSSL в пути (путь cmd) с версией OpenSSL 1.0.2g / p . Поддержка SSL возвращает false .

  • На моем компьютере разработчика установлено 1.1.1d , но openssl не в пути (cmd path), но возвращает true для поддержки SSL. SSL поддерживается на машине .

  • Сборка машины со статическим инструментарием Qt (на котором также был встроен статический Qt) имеет OpenSSL 1.0.2g inтолько путь . На компьютере поддерживается SSL . за исключением моего ПК с установленным OpenSSL 1.1.1d. Разница между этой машиной и вышеупомянутой проверенной машиной заключается в том, что Qt creator установлен с OpenSSL, установленным по предоставленной ссылке.

В моих проектах я добавлял в файл .pro для каждой сборки в надежде это поможет (не помогло)

INCLUDEPATH += "C:\OpenSSL\OpenSSL-Win32\include"
LIBS += -L"C:\OpenSSL\OpenSSL-Win32\lib\MinGW\libssl.a"
LIBS += -L"C:\OpenSSL\OpenSSL-Win32\lib\MinGW\libcrypto.a"

Я пробовал различные варианты компиляции статического Qt с OpenSSL -Include и -Libs & с каждой из компиляций, пытался связать сстатические VC OpenSSL libs, MinGW libs и *.dlls, но, похоже, ничего не работает.

Я нахожусь в тупике, и у меня нет ничего, что можно попробовать. Мне действительно нужна помощь в решении этой проблемы.

...