Qt (少なくとも OpenSSL バックエンドを使用) はコンパイルできます。
- SSL サポートなし --
QT_NO_SSL
定義された SSL クラスは、コンパイルにも使用できません。
- 実行時に SSL サポートが読み込まれる => コンパイル時に OpenSSL ヘッダーが存在する必要がありますが、QtNetwork は
libssl
/ libcrypto
/... にリンクしません。代わりに、dlopen
実行時にこれらのライブラリが必要な関数を探します。
- QtNetwork からリンクされた SSL サポート付き。
この理由は、QtNetwork を暗号化ライブラリにリンクすると、米国との間の再配布に関して法的な問題が発生するという事実に関係しています。#3では、SSLライブラリが必要です。そうしないと、SSLがまったく必要ない場合でも、アプリケーションが起動しません。また、Qt インストーラーはこれらの SSL ライブラリを「簡単に」出荷することはできません。代わりに、Qt は構成 #2 でコンパイルされ、OpenSSL をインストールする責任があります。
QT_NO_SSL
が定義されていないのに false を返すシナリオQSslSocket::supportsSsl()
は #2 です (たとえば、Qt が適切な SSL ライブラリの検索または読み込みに失敗した場合)。