我正在使用 Qt 开发一个跨平台应用程序,该应用程序不得依赖于操作系统预安装的库。我对 Windows 没有任何问题:我需要做的就是将 .dll 文件复制到可执行文件目录中。对于各种基于 linux 的系统,我正在使用执行以下步骤的脚本:
- 运行
qmake
- 附加
-Wl,-rpath,./
到LFLAGS
Makefile 的指令,使依赖搜索也在当前目录中运行 - 运行使
- 使用获取所有应用程序依赖项
ldd -v -r
并将可执行文件及其依赖项复制到另一个文件夹中
运行应用程序在构建应用程序的相同操作系统(和相同版本)的全新安装(没有 Qt)上运行良好,但在另一个操作系统/另一个版本上运行它由于一些错误而失败。
没有依赖关系的构建不是一个可行的选择,因为该应用程序可能在没有互联网访问和/或预安装 Qt 的机器上使用。而且我也不能使用静态构建,因为需要 QWebKit 并且它不支持静态构建。
我构建应用程序的系统和我尝试运行它的系统的不同组合会产生不同的错误:
relocation error: ./libcrypto.so.7: symbol __libc_enable_secure, version GLIBC_2.0 not defined in file ld-linux.so.2 with link time reference
relocation error: ./libc.so.6: symbol __libc_enable_secure, version GLIBC_PRIVATE not defined in file ld-linux.so.2 with link time reference
有任何想法吗?