76 votes

"Failed to load platform plugin "xcb" " lors du lancement d'une application qt5 sous linux sans qt installé

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

Mais lorsque j'essaie de le lancer sous Linux sans Qt SDK installé, la sortie dans la console est la suivante :

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 en le plaçant dans le répertoire /usr/lib n'est pas utile.

5voto

Pour ceux qui sont toujours bloqués après avoir essayé toutes les autres options disponibles sur Internet, vous pouvez chercher le chemin exact à partir duquel cette notoirement libqxcb.so est en train d'être recherché, pour être ouvert/chargé par le Qt App( VirtualBox-5.2.8 est le Qt dans mon cas), en utilisant le strace outil. Dans mon cas, puisque je construisais VirtualBox-5.2.8 de sa source, il était à la recherche libqxcb.so à l'emplacement ci-dessous :
"...VirtualBox-5.2.8/out/linux.amd64/release/bin/platforms/" et non dans le default les chemins de la bibliothèque, Qt chemin d'installation, etc. Ainsi, aucun des ldd les chèques, et d'autres solutions ont fonctionné. Et aussi le réglage QT_DEBUG_PLUGINS=1 n'a pas non plus produit de journaux supplémentaires.

Exécution de 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-head moment, et j'ai créé le symlink à partir de l'installation Qt5.10.1 's platforms mentionné ci-dessous : "...Qt5.10.1/Tools/QtCreator/lib/Qt/plugins/platforms/" sur le chemin recherché qui est "...VirtualBox-5.2.8/out/linux.amd64/release/bin/" . Ainsi, VirtualBox-5.2.8 construit à 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 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 substantiel - pour FreeBSD il y a déjà un port pour la construction VirtualBox 使って clang mais pour Linux, il est fortement dépendant de GCC comme je l'ai vu et donc il a fallu beaucoup d'efforts pour arriver à ce point et être capable de construire avec succès. VirtualBox-5.2.8 à partir de sa source en utilisant Clang/Clang++/LLVM sur Ubuntu 17.10 x86_64 pour la cible Linux/AMD64 ( Ubuntu 17.10 x86_64 ) et le lancer avec succès après avoir résolu d'autres problèmes avec cette fameuse libqxcb.so un.

A la vôtre.

4voto

Dorian Points 270

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

C'est aussi une lecture indispensable 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

3voto

李智坚 Points 31

Dans mon ubuntu type :

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

Peut travailler

2voto

MZeng Points 21

C'est ainsi que j'ai résolu 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 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

1voto

Sasha Pachev Points 111

Plate-forme : Kubuntu 18.

Dans mon cas, j'ai fait strace -f -s 1000 zoom -o zoom.trace puis a étudié zoom.trace. Il y avait beaucoup de sorties. J'ai cherché SIGABRT pour réduire les possibilités. Le problème était que lorsque Zoom lançait /usr/bin/kde-open5, ce processus se heurtait à une assertion interne juste après avoir essayé de statuer sur le processus. /usr/bin/platforms . Sur un coup de tête, j'ai fait ça :

 sudo ln -s /opt/zoom/platforms /usr/bin/platforms

et ça a fait fonctionner Zoom. Je me rends compte qu'il y a d'autres problèmes avec l'installation de KDE/QT qui doivent peut-être être corrigés, mais cela m'a suffi pour résoudre le problème pour le moment.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X