我编写了使用 Qt5 的 Linux 应用程序。
但是当我尝试在未安装 Qt SDK 的 Linux 上启动它时,控制台中的输出是:
Failed to load platform plugin "xcb". Available platforms are:
我该如何解决这个问题?也许我需要复制一些插件文件?当我使用安装了 Qt5 的 Ubuntu 时,但我重命名了 Qt 目录,也会出现同样的问题。因此,它使用了 qt 目录中的一些文件...
libqxcb.so
我在 Qt SDK 目录中找到了文件,但将其放入/usr/lib
并没有帮助。
答案1
当我尝试运行“Stellarium”时收到此错误消息。
使用 strace 我发现丢失的文件是libxcb-xinerama.so.0
。我必须重新安装libxcb-xinerama0
才能使其工作:
sudo apt-get install --reinstall libxcb-xinerama0
答案2
对于任何遇到此问题的未来读者 - 在你开始(危险地)摆弄共享库的符号链接之前,我强烈建议你运行
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))
错误,发现解决方案,解决了这个问题。
答案3
尝试libqt5x11extras5
使用命令安装包:
sudo apt-get install libqt5x11extras5
名称可能不同。您可以通过搜索来找到:
sudo apt-cache search qt5 | grep 'X11 extras'
并且您获得包的名称如下:
libqt5x11extras5-Qt 5 X11 附加功能
答案4
运行这个解决了我的问题:
sudo apt-get --reinstall install libqt5dbus5 \
libqt5widgets5 libqt5network5 libqt5gui5 libqt5core5a \
libdouble-conversion1 libxcb-xinerama0