由于 Qt 库损坏导致应用程序无法运行:缺少 XCB(Ubuntu 17.10)

由于 Qt 库损坏导致应用程序无法运行:缺少 XCB(Ubuntu 17.10)

正在接受培训的年轻开发人员 我是 Ubuntu 新手,在使用时遇到了麻烦......

确实,有些应用程序由于库缺陷而无法启动。这些应用程序似乎是依赖于 Qt 库的应用程序。

为了满足网络课程的需要,我安装了 VirtualBox。但是启动时,终端却让我很不爽:

$virtualbox
Qt FATAL: This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".

Available platform plugins are: eglfs, linuxfb, minimal, minimalgl, offscreen, vnc, xcb.

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

你知道什么情况可能会出错吗?

在我上网搜索的过程中(已经三天了,我还没有找到任何解决方案),我发现可能有一个与文件 libqxcb.so 的链接

这可能是一个图书馆,或者会与一个图书馆建立链接...不过,这种方式似乎在某处“断裂”了,我不知道如何修复它。

但是,我在两个 Qt 目录中有两个 libqxcb.so 副本,将我放入这些目录后运行 ldd libqxcb.so 命令并没有给出“未找到”的答案。

我使用存储库安装了 3 个 virtualbox 包,并使用 Synaptic 重新安装了它们,但没有成功。

至于 Qt,我通过 Ubuntu 存储库安装了一次(版本 4),然后使用 Qt 官方网站提供的 .run 安装程序安装了版本 5。

今天还注意到我无法启动 wireshark。这也可能是由于 Qt 库不足造成的,但不一样?这些事情可能有关联...

moufid@Moufid:~$ wireshark
wireshark: error while loading shared libraries: libQt5Network.so.5: cannot open shared object file: No such file or directory

提前感谢大家的帮助和想法!

以下是请求的输出qtchooser -print-env

QT_SELECT="default"
QTTOOLDIR="/usr/lib/x86_64-linux-gnu/qt4/bin"
QTLIBDIR="/usr/lib/x86_64-linux-gnu"

我试过这个解决方案邮政但它没有用。

现在,的输出qtchooser -print-env是:

QT_SELECT="default"
QTTOOLDIR="/home/moufid/Qt/5.10.1/gcc_64/bin"
QTLIBDIR="/home/moufid/Qt/5.10.1/gcc_64/lib"

这是输出LD_LIBRARY_PATH=/home/moufid/Qt/5.10.1/gcc_64/lib/ ldd /usr/lib/virtualbox/VirtualBox.so | grep Qt

libQt5X11Extras.so.5 => /usr/lib/x86_64-linux-gnu/libQt5X11Extras.so.5 (0x00007fd081d21000)
libQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007fd0815d8000)
libQt5Gui.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 (0x00007fd080e71000)
libQt5Widgets.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 (0x00007fd08062d000)
libQt5PrintSupport.so.5 => /usr/lib/x86_64-linux-gnu/libQt5PrintSupport.so.5 (0x00007fd0803be000)
libQt5OpenGL.so.5 => /usr/lib/x86_64-linux-gnu/libQt5OpenGL.so.5 (0x00007fd080167000)

看起来有些库已经安装好了?我确实在 /home/moufid/Qt/5.10.1/gcc_64/lib/ 中找到了所有这些文件(已检查过)。/usr/lib/x86_64-linux-gnu/ 文件夹的 CHMOD 为 755。

答案1

我最近遇到了类似的问题wireshark

  • wireshark 3.2.3
  • Ubuntu 20.04
  • 使用 i3wm

错误信息:

$ wireshark 
qt.qpa.xcb: could not connect to display 
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, xcb.

Aborted (core dumped)

后:

  • 尝试设置QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/,并且
  • 并运行QT_DEBUG_PLUGINS=1

我找到了解决办法。

奇怪的是,对于我来说,解决方法只是明确设置DISPLAY环境变量:

DISPLAY=:0 wireshark

我本以为DISPLAY会使用合理的默认值。但这确实奏效了。我不确定这是否能解决上述相同的问题,但因为我没有在其他地方找到这个答案,所以似乎值得分享 :)

相关内容