trying to solve this for hours. My Qt program depends on https connection but in cannot launch it on Arch (works fine on Debian and Ubuntu).
I added /usr/lib to LD_LIBRARY_PATH LD_LIBRARY_PATH=home/michal/Qt/5.10.0/gcc_64/lib:/home/michal/Qt/5.10.0/gcc_64/lib:/usr/lib
program output
qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_CTX_new
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_library_init
qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
ls /usr/lib/libssl*
lrwxrwxrwx 1 root root 13 2. lis 17.20 /usr/lib/libssl.so -> libssl.so.1.1
-r-xr-xr-x 1 root root 502024 25. kvě 18.54 /usr/lib/libssl.so.1.0.0
-rwxr-xr-x 1 root root 434176 2. lis 17.21 /usr/lib/libssl.so.1.1
-rwxr-xr-x 1 root root 359736 5. říj 22.49 /usr/lib/libssl3.so
ls -l /usr/lib/libcrypto*
lrwxrwxrwx 1 root root 16 2. lis 17.20 /usr/lib/libcrypto.so -> libcrypto.so.1.1
-r-xr-xr-x 1 root root 2842880 25. kvě 18.54 /usr/lib/libcrypto.so.1.0.0
-rwxr-xr-x 1 root root 2594952 2. lis 17.21 /usr/lib/libcrypto.so.1.1
with test code
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
qDebug()<<"SSL version use for build: "<<QSslSocket::sslLibraryBuildVersionString();
qDebug()<<"SSL version use for run-time: "<<QSslSocket::sslLibraryVersionNumber();
qDebug()<<QCoreApplication::libraryPaths();
return 0;
}
the output is
SSL version use for build: "OpenSSL 1.0.1e-fips 11 Feb 2013"
qt.network.ssl: QSslSocket: cannot resolve CRYPTO_num_locks
qt.network.ssl: QSslSocket: cannot resolve CRYPTO_set_id_callback
qt.network.ssl: QSslSocket: cannot resolve CRYPTO_set_locking_callback
qt.network.ssl: QSslSocket: cannot resolve ERR_free_strings
qt.network.ssl: QSslSocket: cannot resolve EVP_CIPHER_CTX_cleanup
qt.network.ssl: QSslSocket: cannot resolve EVP_CIPHER_CTX_init
qt.network.ssl: QSslSocket: cannot resolve sk_new_null
qt.network.ssl: QSslSocket: cannot resolve sk_push
qt.network.ssl: QSslSocket: cannot resolve sk_free
qt.network.ssl: QSslSocket: cannot resolve sk_num
qt.network.ssl: QSslSocket: cannot resolve sk_pop_free
qt.network.ssl: QSslSocket: cannot resolve sk_value
qt.network.ssl: QSslSocket: cannot resolve SSL_library_init
qt.network.ssl: QSslSocket: cannot resolve SSL_load_error_strings
qt.network.ssl: QSslSocket: cannot resolve SSL_get_ex_new_index
qt.network.ssl: QSslSocket: cannot resolve SSLv2_client_method
qt.network.ssl: QSslSocket: cannot resolve SSLv3_client_method
qt.network.ssl: QSslSocket: cannot resolve SSLv23_client_method
qt.network.ssl: QSslSocket: cannot resolve SSLv2_server_method
qt.network.ssl: QSslSocket: cannot resolve SSLv3_server_method
qt.network.ssl: QSslSocket: cannot resolve SSLv23_server_method
qt.network.ssl: QSslSocket: cannot resolve X509_STORE_CTX_get_chain
qt.network.ssl: QSslSocket: cannot resolve OPENSSL_add_all_algorithms_noconf
qt.network.ssl: QSslSocket: cannot resolve OPENSSL_add_all_algorithms_conf
qt.network.ssl: QSslSocket: cannot resolve SSLeay
qt.network.ssl: Incompatible version of OpenSSL
SSL version use for run-time: 0
("/home/michal/Qt/5.10.0/gcc_64/plugins", "/home/michal/Programming/build-Test-Desktop_Qt_5_10_0_GCC_64bit4-Vydu00e1nu00ed")
I ran into the same problem after I have upgraded my Ubuntu 16.x to 18.04. The reason seems to be that the default libssl version on the new Ubuntu is 1.1.0, while Qt's pre-built binaries until now expect 1.0.0 (see https://bugreports.qt.io/browse/QTBUG-68156 for more details on this problem).
My workaround was as follows.
Change to the directory of your Qt executable.
Create a symbolic link to libssl version 1.0.0
ln -s /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 libssl.so
Make sure that your LD_LIBRARY_PATH contains the directory in 1).
Now starting your Qt executable will pick the right libssl version.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With