Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Qt cannot find libssl even though it is installed

Tags:

ssl

openssl

qt

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")
like image 654
Nezbeda Avatar asked Dec 04 '25 17:12

Nezbeda


1 Answers

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.

  1. Change to the directory of your Qt executable.

  2. 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
    
  3. Make sure that your LD_LIBRARY_PATH contains the directory in 1).

Now starting your Qt executable will pick the right libssl version.

like image 185
boto Avatar answered Dec 07 '25 17:12

boto



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!