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.

0voto

Antos Points 3

Il semble qu'il puisse y avoir différentes choses manquantes derrière 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

a résolu le problème.

0voto

Tomas Points 1

Créez le fichier qt.conf dans votre projet et ajoutez :

[Paths]
Plugins = /path/to/our/qt instalation/plugins

https://doc.qt.io/qt-5/qt-conf.html

0voto

David Points 1

Les autres réponses données ici sont très utiles, mais il y a une autre cause potentielle à ce comportement que j'ai rencontré et qui nécessite une solution complètement différente.

J'exécutais Ubuntu 18.04 sur VirtualBox 6.1.4, et après avoir installé quelques applications propriétaires que mon travail utilise, toutes les applications Qt5 ne démarraient pas. Comme tout le monde ici, elles affichaient un message d'erreur concernant leur incapacité à charger "xcb". Après avoir fouillé un moment, j'ai réalisé que "/usr/lib" n'était plus indexé par ldconfig. Je suis surpris que cela ait cassé aussi peu d'applications, probablement à cause du fait que "/usr/lib/x86_64-linux-gnu" était toujours indexé.

Si vous avez le même problème, la solution est simple. Ajoutez simplement "/usr/lib/" à LD_LIBRARY_PATH en utilisant l'une des méthodes suivantes méthodes

0voto

haxpor Points 181

J'ai rencontré le même problème mais avec une autre application vkreplay dans le cadre de Vulkan.

Vous pouvez essayer d'utiliser strace pour aider à voir ce qui se passe derrière la scène (tracer les appels système et les signaux) dans sa tentative de charger une bibliothèque partagée comme la suivante.

strace vkreplay -o vkcube_trace.vktrace -l 2

ou

strace <your-command> <your-command-parameters>

pour mon cas, j'ai vu le message suivant s'afficher

...
stat("/usr/lib/x86_64", 0x7ffc5f1c2aa0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/x86_64/libxcb-ewmh.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64", 0x7ffc5f1c2aa0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib/libxcb-ewmh.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
munmap(0x7fac93723000, 114202)          = 0
munmap(0x7fac92f9d000, 2109784)         = 0
munmap(0x7fac92f8b000, 69736)           = 0
...

La bibliothèque partagée en question est libxcb-ewmh.so.2 dont le chargement a échoué. Ensuite, je fais apt search libxcb-ewmh sur ma distribution Ubuntu 19.10, j'ai trouvé que c'était une bonne idée. libxcb-ewmh2 . Ensuite, vous l'installez avec sudo apt install libxcb-ewmh2 .

Enfin, le problème est résolu !

0voto

qrtLs Points 202

À lire attentivement, au cas où : QLibraryPrivate::loadPlugin failed on "/foo../venv/lib/python3.8/site-packages/PySide2/Qt/plugins/platforms/libqxcb.so" : "Cannot load library /foo../venv/lib/python3.8/site-packages/PySide2/Qt/plugins/platforms/libqxcb.so: (libxcb-util.so.1: cannot open shared object file: No such file or directory)"

donc ça rate : https://packages.debian.org/sid/libxcb-util1

pour debian, pas sid/bullseye, backport vers votre version, par exemple stretch/buster, voir https://backports.debian.org/Instructions/

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