«Impossible de charger le plug-in de plate-forme» xcb «» lors du lancement de l'application qt5 sur linux sans qt installé

22

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

Mais lorsque j'essaie de le lancer sur 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 que je dois 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é un fichier libqxcb.sodans le répertoire Qt SDK, mais le placer /usr/libn'aide pas.

locomotion
la source

Réponses:

12

La bonne solution exécute la commande suivante sur un terminal:

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

Il crée le lien symbolique qui lui manque.

Francesco
la source
1
Cela a résolu le problème pour moi.
Pratik Singhal
3
Pourquoi avez - vous un lien les fichiers plugins/platformsà /usr/bin? Le platformsrépertoire contient des bibliothèques partagées, /usr/binest utilisé pour les fichiers binaires. Le contenu de ne devrait-il pas platformsentrer /usr/lib?
Nathan F.
@NathanF. au moins pour mon installation, le chargeur Qt recherche les plates-formes /usr/bin/platforms(je ne sais pas pourquoi). Donc, cette réponse a également fonctionné pour moi: stackoverflow.com/a/25437758/2249798
m13r
12

À tous les futurs lecteurs qui rencontrent cela - avant de commencer (dangereusement) à jouer avec des liens symboliques vers des bibliothèques partagées, je vous suggère fortement d'exécuter

export QT_DEBUG_PLUGINS=1

puis réexécutez votre exécutable défaillant dans le terminal. Lisez le message d'erreur réel lancé par QT, car aucune des solutions ci-dessus n'a traité la cause de cette erreur dans mon cas.

Ma sortie après avoir allumé 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)

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

SlugFrisco
la source
2
Je ne sais pas qui a voté contre. Cela m'a donné les traces nécessaires pour trouver l'erreur réelle pertinente à ma situation spécifique (dans mon cas, libc ++. Était donc manquant et devait être installé à partir de libc ++ - dev ". Merci d'avoir posté cela.
HBSKan
11

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-xinerama0pour le faire fonctionner:

sudo apt-get install --reinstall libxcb-xinerama0
wmeyer
la source
Wow, quel gâchis de chasse cela essayait de réinstaller diverses. Tellement reconnaissant pour cela.
Hendy
Cela a aidé !!! merci
trsvchn
6

Essayez d'installer le libqt5x11extras5package avec la commande:
sudo apt-get install libqt5x11extras5

Le nom peut être différent. Vous pouvez le découvrir en recherchant:
sudo apt-cache search qt5 | grep 'X11 extras'

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

libqt5x11extras5 - Suppléments Qt 5 X11

Bonus_05
la source
3

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

C'est également une lecture incontournable pour comprendre quelles bibliothèques essentielles sont nécessaires dans le cas simple d'une application gui:

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

Dorian
la source
2

Dans mon type ubuntu:

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

Peut marcher

李智坚
la source
1
Ce n'est pas une bonne réponse en l'état. Veuillez modifier pour expliquer ce que fait exactement cette commande.
You'reAGitForNotUsingGit
N'a pas fonctionné pour moi
Ratbert
2

Pour ceux qui sont toujours bloqués après avoir essayé toutes les autres options sur Internet, vous pouvez rechercher le chemin exact à partir duquel ce notoire libqxcb.so est recherché, pour l'ouverture / le chargement par l' Qtapplication ( VirtualBox-5.2.8c'est l' Qtapplication dans mon cas), en utilisant le outil strace . Dans mon cas, puisque je construisais à VirtualBox-5.2.8partir de sa source, il cherchait libqxcb.sodans l'emplacement ci-dessous:
"...VirtualBox-5.2.8/out/linux.amd64/release/bin/platforms/" et non dans les defaultchemins de bibliothèque, Qtchemin d'installation, etc. Donc, aucune des lddvérifications et autres solutions n'a fonctionné. Et le réglage QT_DEBUG_PLUGINS=1n'a pas non plus produit de journaux supplémentaires.

Exécuter strace sur le binaire VirtualBox que j'ai construit en utilisant 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 hitting-the-nail-on-its-headmoment, et j'ai créé le symlinkdu installé Qt5.10.1l » platformsannuaire mentionné ci - dessous: "...Qt5.10.1/Tools/QtCreator/lib/Qt/plugins/platforms/"sur le chemin qui est recherché "...VirtualBox-5.2.8/out/linux.amd64/release/bin/". Ainsi, VirtualBox-5.2.8construit à partir des sources sur Linux ( Ubuntu 17.10 x86_64) en utilisant Clang/LLVM, enfin lancé avec succès !

En fait, une autre chose intéressante est que, j'ai construit VirtualBox-5.2.8entièrement en utilisant Clang/Clang++/LLVMle Ubuntu 17.10 x86_64après un effort important - pour FreeBSD, il y a déjà un port pour la construction en VirtualBoxutilisant clangmais pour Linux, il est fortement dépendante GCCque j'ai vu , et donc il a fallu beaucoup d'efforts pour obtenir à ce point pour pouvoir construire avec succès à VirtualBox-5.2.8partir de sa source en utilisant Clang/Clang++/LLVMon Ubuntu 17.10 x86_64for target Linux/AMD64( Ubuntu 17.10 x86_64) et le lancer avec succès après avoir résolu d'autres problèmes avec ce problème notoire libqxcb.so.

À votre santé.


la source
1

Voilà comment résoudre quelques problèmes lorsque j'utilise l'émulateur sur Ubuntu 18.04.

$ vim ~ / .bashrc

Ajoutez les lignes suivantes à la fin du fichier. J'installe mon SDK Android sur/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
la source
1

L'exécution de cela m'a résolu:

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

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

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

résolu le problème.

Antos
la source
-3

Copiez plugins/platforms/libqxcb.sode votre qtinstallation vers platforms/libqxcb.sodans votre répertoire d'application.

Adam
la source