"Fehler beim Laden des Plattform-Plugins" xcb "" beim Starten der qt5-App unter Linux, ohne dass qt installiert ist

22

Ich habe eine Anwendung für Linux geschrieben, die Qt5 verwendet.

Aber wenn ich versuche, es unter Linux zu starten, ohne dass Qt SDK installiert ist, ist die Ausgabe in der Konsole:

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

Wie kann ich das beheben? Vielleicht muss ich eine Plugin-Datei kopieren? Wenn ich Ubuntu mit Qt5 verwende, aber das Qt-Verzeichnis umbenenne, tritt das gleiche Problem auf. Also verwendet es eine Datei aus dem qt-Verzeichnis ...

Ich habe eine Datei libqxcb.soim Qt SDK-Verzeichnis gefunden, aber das Ablegen in /usr/libhilft nicht.

Fortbewegung
quelle

Antworten:

12

Die richtige Lösung führt den folgenden Befehl auf einem Terminal aus:

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

Es wird die symbolische Verknüpfung erstellt, die übersehen wird.

Francesco
quelle
1
Dies löste das Problem für mich.
Pratik Singhal
3
Warum verknüpfen Sie die Dateien in plugins/platformszu /usr/bin? Das platformsVerzeichnis enthält gemeinsam genutzte Bibliotheken und /usr/binwird für Binärdateien verwendet. Sollte nicht der Inhalt von platformshineingehen /usr/lib?
Nathan F.
@ NathanF. Zumindest für meine Installation sucht der Qt-Loader nach Plattformen unter /usr/bin/platforms(ich weiß nicht warum). Diese Antwort hat auch bei mir funktioniert
m13r
12

Allen zukünftigen Lesern, die darauf stoßen - bevor Sie (gefährlich) mit Symlinks zu gemeinsam genutzten Bibliotheken herumspielen, empfehle ich dringend, dass Sie mitmachen

export QT_DEBUG_PLUGINS=1

Führen Sie anschließend die fehlerhafte ausführbare Datei erneut im Terminal aus. Lesen Sie die eigentliche Fehlermeldung, die von QT ausgegeben wurde, da in meinem Fall keine der oben genannten Lösungen die Ursache für diesen Fehler ansprach.

Meine Ausgabe nach dem Einschalten QT_DEBUG_PLUGINSwar:

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)

so googelte ich dann den fehler version `ZLIB_1.2.9' not found (required by /usr/lib/x86_64-linux-gnu/libpng16.so.16))und fand die lösung dafür , die das problem löste.

SlugFrisco
quelle
2
Ich bin mir nicht sicher, wer dich abgewählt hat. Dies gab mir die Spuren , den tatsächlichen Fehler relevant zu meiner besonderen Situation zu finden , benötigt (in meinem Fall libc ++ so fehlte und hatte von libc installiert werden ++ -.. Dev“Vielen Dank für dieses Posting.
HBSKan
11

Ich hatte diese Fehlermeldung beim Versuch, "Stellarium" auszuführen.

Mit strace fand ich, dass die fehlende Datei war libxcb-xinerama.so.0. Ich musste neu installieren libxcb-xinerama0, damit es funktioniert:

sudo apt-get install --reinstall libxcb-xinerama0
wmeyer
quelle
Wow, was für ein Durcheinander war das, als ich verschiedene Neuinstallationen versuchte. So dankbar dafür.
Hendy
Das hat geholfen !!! danke
trsvchn
6

Versuchen Sie, das libqt5x11extras5Paket mit folgendem Befehl zu installieren :
sudo apt-get install libqt5x11extras5

Der Name kann unterschiedlich sein. Sie können es herausfinden, indem Sie suchen:
sudo apt-cache search qt5 | grep 'X11 extras'

und du bekommst den Namen des Pakets als Ergebnis:

libqt5x11extras5 - Qt 5 X11 Extras

Bonus_05
quelle
3

Führen Sie ldd für Ihre ausführbare Anwendung aus, um zu sehen, wie Bibliotheksabhängigkeiten aufgelöst werden.

Dies ist auch ein Muss, um zu verstehen, welche wichtigen Bibliotheken für einfache GUI-Anwendungen benötigt werden:

http://qt-project.org/doc/qt-5/linux-deployment.html

Dorian
quelle
2

In meinem Ubuntu-Typ:

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

Kann arbeiten

李智坚
quelle
1
Dies ist keine gute Antwort, wie es aussieht. Bitte editieren Sie, um zu erklären, was genau dieser Befehl bewirkt.
Android Dev
Hat bei mir nicht funktioniert
Ratbert
2

Für diejenigen , die immer noch stecken geblieben sind , nachdem jede andere Möglichkeit gibt , im Internet versuchen, Sie in genauen Pfad suchen kann , aus dem diese berüchtigte libqxcb.so suchten wird, zum Öffnen / Laden der QtApp ( VirtualBox-5.2.8die QtApp in meinem Fall), mit der Werkzeug spannen . In meinem Fall VirtualBox-5.2.8suchte ich, da ich von der Quelle aus erstellte, libqxcb.soan der folgenden Position:
"...VirtualBox-5.2.8/out/linux.amd64/release/bin/platforms/" und nicht in den defaultBibliothekspfaden, QtInstallationspfad usw. Also lddfunktionierte keine der Überprüfungen und anderen Lösungen. Und auch beim Einstellen wurden QT_DEBUG_PLUGINS=1keine zusätzlichen Protokolle erstellt.

Ausführen von strace auf der VirtualBox-Binärdatei, die ich mit Clang / LLVM unter Ubuntu 17.10 x86_64 erstellt habe:

...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
.
.
.

Das war mein hitting-the-nail-on-its-headMoment, und ich erstellt die symlinkvon dem installierten Qt5.10.1‚s platformsVerzeichnis unten erwähnt: "...Qt5.10.1/Tools/QtCreator/lib/Qt/plugins/platforms/"auf den Weg gesucht , die ist "...VirtualBox-5.2.8/out/linux.amd64/release/bin/". Also, VirtualBox-5.2.8von Source auf Linux ( Ubuntu 17.10 x86_64) mit gebaut Clang/LLVM, endlich erfolgreich gestartet !

In der Tat, hier ein andere interessante Sache ist , dass habe ich gebaut VirtualBox-5.2.8vollständig mit Clang/Clang++/LLVMauf Ubuntu 17.10 x86_64nach erheblichen Aufwand - für FreeBSDgibt es bereits ein Port für den Bau VirtualBoxverwenden , clangaber für Linux, es ist stark abhängig von , GCCwie ich sehe und es dauerte deshalb viel Mühe zu bekommen bis zu diesem Punkt, um in der Lage zu sein, erfolgreich VirtualBox-5.2.8von seiner Quelle mit Clang/Clang++/LLVMon Ubuntu 17.10 x86_64for target Linux/AMD64( Ubuntu 17.10 x86_64) zu bauen und sie erfolgreich zu starten, nachdem andere Probleme zusammen mit diesem berüchtigten libqxcb.sobehoben wurden.

Prost.


quelle
1

So lösen Sie einige Probleme, wenn ich unter Ubuntu 18.04 den Emulator verwende.

$ vim ~ / .bashrc

Fügen Sie die folgenden Zeilen am Ende der Datei hinzu. Ich installiere mein Android SDK unter/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
MZeng
quelle
1

Laufen dies löste es für mich:

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

Es scheint, dass verschiedene Dinge dahinter fehlen können. In meinem Fall (Debian 9.7) hat QT_DEBUG_PLUGINS = 1 dazu beigetragen, die fehlenden Bibliotheken und zurückzuverfolgen

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

Problem gelöst.

Antos
quelle
-3

Kopieren Sie plugins/platforms/libqxcb.sovon Ihrer qtInstallation platforms/libqxcb.soin Ihr Anwendungsverzeichnis.

Adam
quelle