qtcreator mac instalar gratis for descargar creator qt ssl debian

instalar - qt for mac



¿Por qué QsslSocket trabaja con Qt 5.3 pero no con Qt 5.7 en Debian Stretch? (5)

Debe cambiar estos enlaces simbólicos: en / usr / lib / x86_64-linux-gnu en la forma: libcrypto.so -> libcrypto.so.1.1 libssl.so -> libssl.so.1.1

a:

libcrypto.so -> libcrypto.so.1.0.2 libssl.so -> libssl.so.1.0.2

Tengo una aplicación que utiliza la clase QWebSocket pero no SSL. Funciona bien cuando ejecuto una versión compilada con Qt 5.3 pero un ejecutable Qt 5.7 se congela en las siguientes advertencias:

QSslSocket: cannot resolve CRYPTO_num_locks QSslSocket: cannot resolve CRYPTO_set_id_callback QSslSocket: cannot resolve CRYPTO_set_locking_callback QSslSocket: cannot resolve ERR_free_strings QSslSocket: cannot resolve EVP_CIPHER_CTX_cleanup QSslSocket: cannot resolve EVP_CIPHER_CTX_init QSslSocket: cannot resolve sk_new_null QSslSocket: cannot resolve sk_push QSslSocket: cannot resolve sk_free QSslSocket: cannot resolve sk_num QSslSocket: cannot resolve sk_pop_free QSslSocket: cannot resolve sk_value QSslSocket: cannot resolve SSL_library_init QSslSocket: cannot resolve SSL_load_error_strings QSslSocket: cannot resolve SSL_get_ex_new_index QSslSocket: cannot resolve SSLv2_client_method QSslSocket: cannot resolve SSLv3_client_method QSslSocket: cannot resolve SSLv23_client_method QSslSocket: cannot resolve SSLv2_server_method QSslSocket: cannot resolve SSLv3_server_method QSslSocket: cannot resolve SSLv23_server_method QSslSocket: cannot resolve X509_STORE_CTX_get_chain QSslSocket: cannot resolve OPENSSL_add_all_algorithms_noconf QSslSocket: cannot resolve OPENSSL_add_all_algorithms_conf QSslSocket: cannot resolve SSLeay QSslSocket: cannot resolve SSLeay_version QSslSocket: cannot call unresolved function CRYPTO_num_locks QSslSocket: cannot call unresolved function CRYPTO_set_id_callback QSslSocket: cannot call unresolved function CRYPTO_set_locking_callback QSslSocket: cannot call unresolved function SSL_library_init QSslSocket: cannot call unresolved function SSLv23_client_method QSslSocket: cannot call unresolved function sk_num

No veo estas advertencias en la versión 5.3 (que funciona correctamente), lo que sugiere que no debo ignorarlas, como se pregunta en esta pregunta . Además, QT += network ya está en mi src.pro .

Me hicieron creer que Debian eliminó estos símbolos del paquete openssl . ¿Alguien podría decirme qué está pasando aquí y cómo podría arreglar esto?

Información del sistema

Estoy corriendo en el tramo de Debian

$ uname -r 4.8.0-2-amd64

Tengo openssl y libssl-dev instalados

openssl is already the newest version (1.1.0c-2). libssl-dev is already the newest version (1.1.0c-2).

He intentado ejecutar esto con Qt 5.3 y 5.7

$ qmake -v QMake version 3.0 Using Qt version 5.7.1 in /usr/lib/x86_64-linux-gnu


Tienes que instalar el siguiente paquete para solucionar el problema.

sudo apt instalar libssl1.0-dev


Tuve el mismo problema en un servidor de debian stretch. Lo arreglé con la ayuda del comentario de 7hibaults.

Ejecutar el siguiente comando solucionó el problema para mí:

sudo apt-get install libssl1.0-dev


TL; DR

Debian Stretch se envía con OpenSSL 1.1; Qt utiliza OpenSSL 1.0; Dale a Qt lo que necesita:

apt install libssl1.0-dev

Respuesta detallada

A partir de esta respuesta sobre OpenSSL y Qt , encontré una sugerencia y mostré la versión de la biblioteca SSL utilizada para el tiempo de compilación y tiempo de ejecución utilizando:

qDebug()<<"SSL version use for build: "<<QSslSocket::sslLibraryBuildVersionString(); qDebug()<<"SSL version use for run-time: "<<QSslSocket::sslLibraryVersionNumber(); qDebug()<<QCoreApplication::libraryPaths();

Y muestra:

SSL version use for build: "OpenSSL 1.0.1e-fips 11 Feb 2013" ... lot of SSL warnings... SSL version use for run-time: 0 ("/opt/Qt/5.8/gcc_64/plugins", "/home/Project/..../build...Desktop_Qt_5_8_0_GCC_64bit-Release/src/release/build_linux_64")

Pero Debian Stretch se envía con OpenSSL 1.1. Como se esperaba, todos los subprocesos en la web sobre este problema son verdaderos: este es un problema de compatibilidad de la versión de la biblioteca OpenSSL.

"Instalar libssl1.0-dev" y el problema se resolvió. Todavía tengo 2 advertencias de SSL sobre SSLv3, pero al menos esto es solo una advertencia (leí algo en la Web sobre eso, no hay forma de encontrarlo nuevamente).

SSL version use for build: "OpenSSL 1.0.1e-fips 11 Feb 2013" QSslSocket: cannot resolve SSLv3_client_method QSslSocket: cannot resolve SSLv3_server_method SSL version use for run-time: 268443839 ("/opt/Qt/5.8/gcc_64/plugins", "/home/Project/..../build...Desktop_Qt_5_8_0_GCC_64bit-Release/src/release/build_linux_64")

Resumen

Hasta que Qt admita OpenSSL 1.1, puede:

  1. Instalar OpenSSL 1.0 (posible en Debian)
  2. Compile OpenSSL 1.0 e instálelo (no probé, pero debería funcionar como 1.)
  3. Envíe OpenSSL 1.0 con su aplicación Qt (no probé, pero debería funcionar como 1.)
  4. Recompile Qt con la opción "-openssl-linked" (según esta respuesta , no hice la prueba y no quiero hacerlo)

La respuesta de Fylhan no funciona bajo Debian Buster ya que libssl1.0-dev era un paquete de transición y ya no es compatible.

Hay un informe de error en el sitio web de Qt y, de acuerdo con el comentario de Giuseppe d''Angelo, existen las siguientes soluciones:

Solución 1

Si su distribución tiene un directorio para OpenSSL 1.0 con los enlaces simbólicos correctos (por ejemplo, Arch tiene /usr/lib/openssl-1.0/libssl.so) use LD_LIBRARY_PATH para forzar la búsqueda de ese directorio primero.

Solución 2

Haga su propio directorio con enlaces simbólicos, y use LD_LIBRARY_PATH para eso.

Solución 3

Reconstruye tu propio Qt.

Podría solucionar el problema utilizando la segunda solución, con los comandos detallados a continuación en mi caso:

  1. mkdir openssl1.0 ; cd openssl1.0
  2. cp /usr/lib/x86_64-linux-gnu/libssl.so.1.0.2 libssl.so.1.0.2
  3. ln -s libssl.so.1.0.2 libssl.so
  4. en QtCreator, Projects> Desktop Qt 5.8.0> Build> Build Environment> Add: Variable LD_LIBRARY_PATH, Value /path/to/dir/openssl1.0 (o agregue LD_LIBRARY_PATH="/path/to/dir/openssl1.0" antes su comando desde la consola)

Es posible que tengas que hacer lo mismo con libcrypto.so también, pero esto fue suficiente para mí. Esta solución le impide cambiar los enlaces simbólicos para todo el sistema.