我正在尝试在不同的OS上部署Qt应用程序。
在this帮助页面之后,Windows像超级按钮一样工作。
不幸的是,我在Linux上部署软件时遇到问题。
我已经阅读了this帮助页面,但似乎我不了解Plugins
部分。
到目前为止我做了什么:
libQt5Core.so.5
,libQt5Core.so.5.11.2
,libQt5Gui.so.5
,libQt5Gui.so.5.11.2
...)添加到与我的应用程序相同的目录中(有些由于某种原因,其中的一部分是符号链接,但这不是这里的问题)platforms
的子目录,并将libqxcb.so
库放在那里编辑:以下错误已解决:
现在,我也不得不以及如何将哪些插件放入目录中。 我收到以下错误消息:
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
Available platform plugins are: xcb.
Aborted
根据this问题,我确实运行过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
。因此,我已将文件(以及libQt5DBus.so.5.11.2
)复制到所有其他Qt库所在的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
,styles
,translations
的文件夹吗?我还需要提供这些文件夹和库吗?如果是,我在哪里可以找到它们,如何检查需要哪一个?
编辑:新错误
我发现了第一个问题。这是由于一个被忽略的库: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的旧安装中找到的。
感谢您的所有帮助。