0

我正在尝试在不同的操作系统上部署 Qt 应用程序。

在这个帮助页面之后,Windows 就像一个魅力。不幸的是,我在 Linux 上部署我的软件时遇到了问题。我已阅读帮助页面,但似乎我不理解该Plugins部分。

到目前为止我做了什么:

  • 我已经使用 QMake 编译了我的应用程序
  • 我已将所有动态链接库(如:、、、libQt5Core.so.5... libQt5Core.so.5.11.2libQt5Gui.so.5添加libQt5Gui.so.5.11.2到与我的应用程序相同的目录中(其中一些出于某种原因是符号链接,但这不是这里的问题)
  • 我创建了一个名为的子目录platforms并将libqxcb.so库放在那里
  • 我创建了一个 bash 脚本,如我正在运行的教程中建议的那样

编辑:以下错误已经解决:

现在我也在纠结如何以及将哪些插件放入我的目录中。我收到以下错误消息:

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found. 
Available platform plugins are: xcb.
Aborted

根据这个问题,我确实运行ldd libqxcb.so了其中列出了以下库(以及更多)

./libqxcb.so: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.11' not found (required by ./libqxcb.so)
linux-vdso.so.1 (0x00007ffd766c5000)
libQt5XcbQpa.so.5 => /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 (0x00007fd2a6181000)
libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007fd2a5f7f000)
libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fd2a5c69000)
libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007fd2a5a24000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007fd2a5770000)
libQt5Gui.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 (0x00007fd2a5007000)
libQt5DBus.so.5 => /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5 (0x00007fd2a4d7d000)
libQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007fd2a4632000)
libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007fd2a43a6000)
...

我已经看到图书馆libQt5DBus.so.5也是必需的。因此,我已将该文件(以及 )复制到所有其他 Qt 库所在libQt5DBus.so.5.11.2的父目录中。platforms

但是,我仍然收到相同的错误消息。

难道是它与第一个输出有关,ldd因为是说“未找到”?

    ./libqxcb.so: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.11' not found (required by ./libqxcb.so)?

当我查看我的 Windows 部署时,我有其他名为iconengines, imageformats,的文件夹stylestranslations我是否还需要提供这些文件夹和库?如果是,我在哪里可以找到它们,我如何检查我需要哪一个?

编辑:新错误

我想出了第一个问题。这是由于一个被忽视的图书馆,即:libQt5XcbQpa.so.5.

但是现在我收到一个新错误:

Cannot mix incompatible Qt library (version 0x50602) with this library (version 0x50b02)

我注意到我要安装应用程序的 PC 上有一个旧的 Qt 安装 (5.6)。我已将我的库(5.11)复制到与我的应用程序和我的 bash 脚本调用相同的文件夹中:

LD_LIBRARY_PATH=$mydirname
export LD_LIBRARY_PATH

我认为这个文件夹现在位于动态链接库的搜索路径中。但是,还有其他安装(5.6)。这些库会在我文件夹中的库之前还是之后找到?我问是因为例如 5.6 安装缺少 QtCharts 库,该库在我的文件夹中提供,但版本为 5.11。这可能是问题的原因吗?

这是我的文件夹的图像:

文件夹结构

最终编辑

我让它工作了!问题是我有libQt5DBus.so而不是libQt5DBus.so.5. 因此,它在我的目录中找到了版本 5.11 的所有库,除了libQt5DBus.so在旧安装中找到版本 5.6 的库。

感谢你的帮助。

4

0 回答 0