我有Qt 4的linux:4.6.3-4 + squeeze1和openssl 0.9.8o-4squeeze14 openssl.0.9.8和openssl 1.0之间的通信存在问题:
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
我已经将openssl-1.0.2j构建到/ home / openssl但我无法使用此库制作Qt。 SSL是动态链接的,因此ldd my_program不会显示libssl。 我试过了
LD_LIBRARY_PATH=/home/openssl ./my_program
但它不起作用,我可以看到命令:
$ 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
总是使用0.9.8也编辑/etc/ld.so.conf没有帮助
如何指出Qt使用从不版本的openssl
最诚挚的问候 马立克
答案 0 :(得分:1)
如果你可以重建你的应用程序(使用qmake / make)更好,并确保你通过运行
使用正确的openssl库export LD_LIBRARY_PATH=Absolute_Path/openssl/lib
在构建之前。
此外,您可以在运行应用程序之前使用相同的命令,即使您的应用程序是使用不同位置的openssl库构建的。但是,您需要确保新位置的openssl库的名称与应用程序根据ldd
输出所需的名称相匹配。
答案 1 :(得分:0)
申请表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)
我已经了解到使用qt的预编译包使用dlopen来访问openssl lib而不是共享lib。这就是为什么我无法使用不同版本的openssl。现在我用openssl编译新的qt