在未安装qt的Linux上启动qt5应用程序时,“无法加载平台插件“ xcb””


22

我为使用Qt5的Linux编写了应用程序。

但是,当我尝试在未安装Qt SDK的Linux上启动它时,控制台中的输出为:

Failed to load platform plugin "xcb". Available platforms are:

我怎样才能解决这个问题?也许我需要复制一些插件文件?当我使用安装了Qt5的Ubuntu时,但我重命名了Qt目录时,也会发生相同的问题。因此,它使用来自qt目录的一些文件...

libqxcb.so在Qt SDK目录中找到了文件,但是将其放入/usr/lib并没有帮助。

Answers:


12

正确的解决方案是在终端上运行以下命令:

sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/ /usr/bin/

它创建它丢失的符号链接。


1
这为我解决了问题。
Pratik Singhal'9

3
为什么将文件链接plugins/platforms/usr/bin?该platforms目录包含共享库,/usr/bin用于二进制文件。内容不应该platforms进入/usr/lib吗?
内森·

@NathanF。至少对于我的安装而言,Qt加载程序在以下位置搜索平台/usr/bin/platforms(我不知道为什么)。所以这个答案也对我
有用

12

对于以后遇到的任何读者-在开始(危险地)弄乱共享库的符号链接之前,我强烈建议您先运行

export QT_DEBUG_PLUGINS=1

然后在终端中再次运行失败的可执行文件。请阅读QT抛出的实际错误消息,因为在我的情况下,上述解决方案均未解决此错误的原因。

我打开后的输出QT_DEBUG_PLUGINS是:

QFactoryLoader::QFactoryLoader() checking directory path "/opt/PostgreSQL/9.6/pgAdmin 4/bin/platforms" ...
loaded library "/opt/PostgreSQL/9.6/pgAdmin 4/plugins/platforms/libqxcb.so"
QLibraryPrivate::loadPlugin failed on "/opt/PostgreSQL/9.6/pgAdmin 4/plugins/platforms/libqxcb.so" : "Cannot load library /opt/PostgreSQL/9.6/pgAdmin 4/plugins/platforms/libqxcb.so: (/opt/PostgreSQL/9.6/lib/libz.so.1: version `ZLIB_1.2.9' not found (required by /usr/lib/x86_64-linux-gnu/libpng16.so.16))"
This application failed to start because it could not find or load the Qt platform plugin "xcb".

Available platform plugins are: xcb.

Reinstalling the application may fix this problem.
Aborted (core dumped)

因此,我搜索了version `ZLIB_1.2.9' not found (required by /usr/lib/x86_64-linux-gnu/libpng16.so.16))错误并找到了解决方法,从而解决了问题。


2
不确定谁对你投了反对票。这给了我找到有关我的具体情况,实际的错误所需要的痕迹(在我的情况的libc ++这么失踪了,不得不从的libc ++安装- 。开发”谢谢你张贴此。
HBSKan

11

尝试运行“ Stellarium”时出现此错误消息。

使用strace我发现丢失的文件是libxcb-xinerama.so.0。我必须重新安装libxcb-xinerama0才能使其工作:

sudo apt-get install --reinstall libxcb-xinerama0

哇,尝试进行各种重新安装真是一团糟。非常感谢。
亨迪

这有所帮助!!!谢谢
trsvchn

6

尝试libqt5x11extras5使用以下命令安装软件包:
sudo apt-get install libqt5x11extras5

名称可能不同。您可以通过搜索找出答案:
sudo apt-cache search qt5 | grep 'X11 extras'

然后您得到软件包的名称:

libqt5x11extras5 -Qt 5 X11其他功能



2

在我的Ubuntu类型中:

sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/ /usr/bin/platforms

能行得通


1
就目前情况而言,这不是一个很好的答案。请编辑以解释该命令的确切作用。
YoureAGitForNotUsingGit

没有为我工作
Ratbert

2

对于那些在尝试了Internet上其他所有选项后仍然遇到问题的人,您可以查找从中搜索此臭名昭著的 确切路径libqxcb.so,以通过QtApp(在我的情况下VirtualBox-5.2.8Qtapp)打开/加载该应用(strace工具。就我而言,由于我是VirtualBox-5.2.8从源代码进行构建的,因此它是在libqxcb.so以下位置进行搜索:
"...VirtualBox-5.2.8/out/linux.amd64/release/bin/platforms/" 而不是在default库路径,Qt安装路径等位置进行搜索。因此,所有ldd检查和其他解决方案均无效。而且设置QT_DEBUG_PLUGINS=1也没有产生任何额外的日志。

在我在Ubuntu 17.10 x86_64上使用Clang / LLVM构建的VirtualBox二进制文件上运行strace:

...VirtualBox-5.2.8$ strace ./out/linux.amd64/release/bin/VirtualBox

.
.
.
access(".../VirtualBox-5.2.8/out/linux.amd64/release/bin/platforms/.", F_OK) = -1 ENOENT (No such file or directory)
write(2, "Qt FATAL: ", 10Qt FATAL: )              = 10
write(2, "This application failed to start"..., 154This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".

Reinstalling the application may fix this problem.) = 154
.
.
.

这是我的hitting-the-nail-on-its-head时刻,我创建了symlink从安装Qt5.10.1platforms下文提到的目录: "...Qt5.10.1/Tools/QtCreator/lib/Qt/plugins/platforms/"到搜索路径是"...VirtualBox-5.2.8/out/linux.amd64/release/bin/"。因此,使用VirtualBox-5.2.8Linux(Ubuntu 17.10 x86_64)从源代码构建Clang/LLVM,终于成功启动了

实际上,这里另一个有趣的事情是,经过大量的努力,我已经VirtualBox-5.2.8完全使用了Clang/Clang++/LLVMon Ubuntu 17.10 x86_64-因为FreeBSD,已经有一个VirtualBox使用clangLinux 进行构建的端口,但是对于Linux,它在很大程度上依赖于GCC我所看到的,因此花了很多精力来获得至此,能够成功VirtualBox-5.2.8使用Clang/Clang++/LLVMon Ubuntu 17.10 x86_64for target Linux/AMD64Ubuntu 17.10 x86_64)从其源进行构建,并在解决此臭名昭著的其他问题之后成功启动它libqxcb.so

干杯。


1

当我在Ubuntu 18.04上运行模拟器时,这就是解决几个问题的方法。

$ vim〜/ .bashrc

在文件末尾添加以下行。我在安装我的Android SDK/opt/Android/Sdk

export ANDROID_HOME=/opt/Android/Sdk
export ANDROID_SDK_ROOT=/opt/Android/Sdk
export ANDROID_AVD_HOME=/home/<your name>/.android/avd
export LD_LIBRARY_PATH="/opt/Android/Sdk/emulator/lib64:$LD_LIBRARY_PATH"
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins

1

运行这个解决了我的问题:

sudo apt-get --reinstall install libqt5dbus5 \
libqt5widgets5 libqt5network5 libqt5gui5 libqt5core5a \
libdouble-conversion1 libxcb-xinerama0

0

似乎背后可能缺少各种不同的东西。就我而言(Debian 9.7),QT_DEBUG_PLUGINS = 1确实有助于追溯缺少的库,并且

$ sudo apt-get install libxcb-render-util0 libxcb-image0 libxcb-keysyms1 libxcb-icccm4

解决了问题。



-3

plugins/platforms/libqxcb.soqt安装复制到platforms/libqxcb.so应用程序目录中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.