【发布时间】:2017-06-29 00:51:41
【问题描述】:
我的应用程序 = libssl.so (1.0.2f) + libcrypto.so (1.0.2f) + my_app_exe
在 Debian 9 上,QT 版本是 5.7,openssl 是 1.0.2l
my_app_exe为QSslSocket::sslLibraryVersionString()返回1.0.2l,表示其使用系统openssl版本。
我能否强制 QT 库以某种方式使用随我的应用程序一起提供的 openssl?
我尝试使用QCoreApplication::addLibraryPath(const QString &path) 设置库路径,但 QT 库仍然选择系统 openssl 版本。
约束:
- 无法重新编译系统上存在的 QT 库
- 无法将 QT 库与应用程序一起提供
- 无法更改系统 QT 库上的 RPATH
my_app_exe 已经使用了RPATH,它指向随附的 openssl 所在的当前目录。
【问题讨论】:
-
如果:
QString sysLibPath = qgetenv("LD_LIBRARY_PATH"); qputenv(myLibPath + ":" + sysLibPath);在main()之前QApplication构造?以防上述解决方案无法满足。 -
@AlexanderVX 试过了,但我无法让它工作,它仍然从旧位置加载
-
这似乎是 Qt 库在某些预建路径中引用 SSL 库。实际上可以将 Qt 配置为使用 SSL 进行构建。
-
我无法更改用户系统上的 QT。