web-dev-qa-db-fra.com

“Impossible de charger le plugin de plate-forme” xcb “” lors du lancement de l'application qt5 sur linux sans que qt ne soit installé

J'ai écrit une application pour Linux qui utilise Qt5.

Mais quand j'essaye de le lancer sur le Linux sans Qt SDK installé, la sortie dans la console est:

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

Comment puis-je réparer cela? Peut-être dois-je copier un fichier de plugin? Lorsque j'utilise Ubuntu avec Qt5 installé, mais que je renomme le répertoire Qt, le même problème se produit. Donc, il utilise un fichier du répertoire qt ...

J'ai trouvé le fichier libqxcb.so dans le répertoire Qt SDK, mais le placer dans /usr/lib n'aide pas.

18
locomotion

La solution correcte exécute la commande suivante dans un terminal:

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

Cela crée le lien symbolique qui manque.

12
Francesco

À tous les futurs lecteurs qui rencontreront ceci - avant de commencer (dangereusement) à jouer avec des liens symboliques vers des bibliothèques partagées, je suggère fortement que vous exécutiez

export QT_DEBUG_PLUGINS=1

puis relancez l’exécutable défaillant dans le terminal. Lisez le message d'erreur émis par QT, car aucune des solutions ci-dessus ne corrige la cause de cette erreur dans mon cas.

Ma sortie après avoir activé QT_DEBUG_PLUGINS était:

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)

alors j'ai googlé l'erreur version `ZLIB_1.2.9' not found (required by /usr/lib/x86_64-linux-gnu/libpng16.so.16)) et trouvé la solution à cela , ce qui a résolu le problème.

7
SlugFrisco

Essayez d’installer le paquet libqt5x11extras5 avec la commande suivante:
Sudo apt-get install libqt5x11extras5

Le nom peut être différent. Vous pouvez le comprendre en cherchant:
Sudo apt-cache search qt5 | grep 'X11 extras'

et vous obtenez le nom du paquet comme résultat:

libqt5x11extras5 - Qt 5 X11 suppléments

6
Bonus_05

J'ai eu ce message d'erreur en essayant d'exécuter "Stellarium".

Avec strace, j’ai trouvé que le fichier manquant était libxcb-xinerama.so.0. J'ai dû réinstaller libxcb-xinerama0 pour que cela fonctionne:

Sudo apt-get install --reinstall libxcb-xinerama0
6
wmeyer

Exécutez ldd sur l'exécutable de votre application pour voir comment il résout les dépendances de la bibliothèque.

C'est aussi une lecture indispensable pour comprendre quelles bibliothèques essentielles sont nécessaires dans le cas simple d'une application graphique:

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

3
Dorian

Dans mon type Ubuntu:

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

peut fonctionner

2
李智坚

Pour ceux qui sont toujours bloqués après avoir essayé toutes les autres options disponibles sur Internet, vous pouvez rechercher le chemin exact dans lequel cette notoire libqxcb.so est recherchée dans , pour l’ouverture/le chargement avec l’application Qt(VirtualBox-5.2.8 est l’application Qtdans mon cas), à l’aide de l’outil strace. Dans mon cas, puisque je construisais VirtualBox-5.2.8 à partir de sa source, il cherchait libqxcb.so à l'emplacement ci-dessous:
"...VirtualBox-5.2.8/out/linux.AMD64/release/bin/platforms/" et non dans les chemins de bibliothèque defaultname__, Qtname__, etc. Ainsi, aucune des vérifications lddet autres solutions n'a fonctionné. De plus, la configuration de QT_DEBUG_PLUGINS=1 n'a produit aucun journal supplémentaire.

Exécution de strace sur le binaire VirtualBox que j'ai construit à l'aide de Clang/LLVM sur Ubuntu 17.10 x86_64:

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

C'était mon moment hitting-the-nail-on-its-head et j'ai créé le symlinkà partir du répertoire installé Qt5.10.1 'platformsmentionné ci-dessous: "...Qt5.10.1/Tools/QtCreator/lib/Qt/plugins/platforms/" dans le chemin d'accès recherché qui est "...VirtualBox-5.2.8/out/linux.AMD64/release/bin/". Ainsi, VirtualBox-5.2.8 a été créé à partir des sources sous Linux (Ubuntu 17.10 x86_64) en utilisant Clang/LLVM, enfin a été lancé avec succès !

En fait, une autre chose intéressante ici est que j'ai construit VirtualBox-5.2.8 entièrement en utilisant Clang/Clang++/LLVM sur Ubuntu 17.10 x86_64 après un effort important - pour FreeBSDname__, il existe déjà un port pour construire VirtualBoxen utilisant clangmais pour Linux, il dépend fortement de GCCIl a fallu déployer beaucoup d'efforts pour en arriver à ce stade afin de pouvoir générer VirtualBox-5.2.8 à partir de sa source à l'aide de Clang/Clang++/LLVM sur Ubuntu 17.10 x86_64 pour Linux/AMD64 (Ubuntu 17.10 x86_64) cible et pour le lancer après avoir résolu d'autres problèmes, ainsi que le notoire libqxcb.so.

À votre santé.

1
user194850

Courir cela me l'a résolu:

Sudo apt-get --reinstall install libqt5dbus5 \
libqt5widgets5 libqt5network5 libqt5gui5 libqt5core5a \
libdouble-conversion1 libxcb-xinerama0
1
FerranB

Voici comment résoudre quelques problèmes lorsque j'utilise l'émulateur sous Ubuntu 18.04.

$ vim ~/.bashrc

Ajoutez les lignes suivantes à la fin du fichier. J'installe mon 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
0
MZeng

Il semble qu'il puisse y avoir différentes choses qui manquent derrière tout cela. Dans mon cas (Debian 9.7), QT_DEBUG_PLUGINS = 1 a permis de retrouver les bibliothèques manquantes et

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

résolu le problème.

0
Antos