2016-11-04 8 views
0

Ich habe Linux mit Qt 4: 4.6.3-4 + squeeze1 und openssl 0.9.8o-4squeeze14 Es gibt ein Problem mit der Kommunikation zwischen openssl.0.9.8 und openssl 1.0 hier beschrieben:Wie man Qt anweist, verschiedene OpenSSL zu verwenden

Running curl with OpenSSL 0.9.8 against OpenSSL 1.0.0 server causes handshake error?

http://marc.info/?l=openssl-dev&m=136760073921954&w=2

ich habe openSSL-1.0.2j gebaut/home/openssl aber ich kann nicht Qt diese Bibliothek nutzen machen. SSL ist dynamisch verlinkt, so dass ldd my_program libssl nicht anzeigt. ich versucht habe

LD_LIBRARY_PATH=/home/openssl ./my_program 

Aber es funktioniert nicht, ich mit dem Befehl sehen kann:

$ lsof -p 16126|grep -i ssl 
ccbox-ccd 16126 root mem REG  80,5 310296 8389597 /usr/lib/i686/cmov/libssl.so.0.9.8 
$ lsof -p 16126|grep -i crypt 
ccbox-ccd 16126 root mem REG  80,5 469632 29365978 /usr/lib/libgcrypt.so.11.5.3 
ccbox-ccd 16126 root mem REG  80,5 143180 29375951 /usr/lib/libk5crypto.so.3.1 
ccbox-ccd 16126 root mem REG  80,1 38360 1104731 /lib/i686/cmov/libcrypt-2.11.3.so 
ccbox-ccd 16126 root mem REG  80,5 1393308 8389598 /usr/lib/i686/cmov/libcrypto.so.0.9.8 

, dass es immer auch verwendet 0.9.8 Bearbeitung /etc/ld.so.conf nicht funktioniert Hilfe

Wie Qt-zu-Punkt zu verwenden, nie Version von openSSL

Mit freundlichen Grüßen Marek

+0

[Add OpenSSL Unterstützung für Linux Qt-Anwendung] (https://stackoverflow.com/q/47630402/608639), [Wie OpenSSL in einem Qt-Projekt enthalten] (https: //stackoverflow.com/q/14681012/608639), [Änderung des OpenSSL-Include-Pfads für qmake] (https://Stackoverflow.com/q/20592001/608639), [Wie kann ich Qt die Verwendung von OpenSSL mitteilen] (https: //stackoverflow.com/q/40429278/608639), [Wie OpenSSL in Qt implementiert wird?] (https://Stackoverflow.com/q/43384887/608639), [Gibt es eine Möglichkeit, statisches Qt mit statischem OpenSSL zu erstellen ?] (https://stackoverflow.com/q/20843180/608639), etc. – jww

Antwort

1

es ist besser, wenn Sie Ihre Anwendung neu erstellen können (qmake/make verwenden), und stellen Sie sicher, dass Sie die richtigen openssl libs verwenden, indem

export LD_LIBRARY_PATH=Absolute_Path/openssl/lib 

vor Gebäude läuft.

Sie können auch den gleichen Befehl verwenden, bevor Sie Ihre App ausführen, selbst wenn Ihre App mit openssl libs an einem anderen Ort erstellt wurde. Sie müssen jedoch sicherstellen, dass die Namen der openssl-Bibliotheken am neuen Speicherort mit denen übereinstimmen, die Ihre Anwendung gemäß Ihrer ldd-Ausgabe benötigt.

+0

das Problem ist, dass meine App nicht direkt gegen openssl verbunden ist, ldd my_app zeigt nicht libcrypt oder libssl, Qt ist gegen openssl so verknüpft Es sieht so aus, als müsste ich eine neue Qt-Version kompilieren und sie mit der neuen openssl verknüpfen. – user2018761

+0

@ user2018761 Wie sieht Ihre app ldd aus? kannst du das posten? – HazemGomaa

0

Anwendung LDD

ldd /home/ccbox-ccdns/ccbox-ccdns 
     linux-gate.so.1 => (0xb7739000) 
     libQtSql.so.4 => /usr/lib/libQtSql.so.4 (0xb76ef000) 
     libQtXml.so.4 => /usr/lib/libQtXml.so.4 (0xb76aa000) 
     libQtNetwork.so.4 => /usr/lib/libQtNetwork.so.4 (0xb757d000) 
     libQtCore.so.4 => /usr/lib/libQtCore.so.4 (0xb72f9000) 
     libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xb72e0000) 
     libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb71eb000) 
     libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb71c5000) 
     libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb71a6000) 
     libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb705f000) 
     libz.so.1 => /usr/lib/libz.so.1 (0xb704b000) 
     libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb7047000) 
     libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0xb7042000) 
     librt.so.1 => /lib/i686/cmov/librt.so.1 (0xb7039000) 
     libglib-2.0.so.0 => /lib/libglib-2.0.so.0 (0xb6f6f000) 
     /lib/ld-linux.so.2 (0xb773a000) 
     libpcre.so.3 => /lib/libpcre.so.3 (0xb6f3c000) 

Und ich habe gelernt, dass vorkompilierte Pakete mit qt Verwendung dlopen zu openssl lib anstelle von Shared lib .so das ist zugreifen, warum ich es nicht andere Version von OpenSSL verwenden machen kann. Jetzt kompiliere ich neues Qt mit OpenSSL

Verwandte Themen