Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"Failed to load platform plugin "xcb" " while launching qt5 app on linux without qt installed

Tags:

linux

qt

xcb

I wrote application for linux which uses Qt5.

But when I am trying to launch it on the linux without Qt SDK installed, the output in console is:

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

How can I fix this? May be I need to copy some plugin file? When I use ubuntu with Qt5 installed, but I rename Qt directory, the same problem occurs. So, it uses some file from Qt directory...

UPDATE: when I create in the app dir "platforms" folder with the file libqxcb.so, the app still doesnot start, but the error message changes:

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

xcb

How can this happen? How can platform plugin be available but can't be loaded?

like image 294
locomotion Avatar asked Jun 14 '13 10:06

locomotion


People also ask

Can't find or load the Qt platform plugin XCB Ubuntu?

This application failed to start because it could not find or load the Qt platform plugin "xcb". Reinstalling the application may fix this problem. appears when you try to launch VNL, fix it by running apt-get install libx11-xcb1. This error typically appears on (K)Ubuntu version 10.10 or older.

How do I install Qt plugins?

Note: You can install only plugins that are supported by your Qt Creator version. To install plugins: Select Help > About Plugins > Install Plugins. In the Source dialog, enter the path to the archive or library that contains the plugin.

What is QT XCB?

On Linux, the xcb QPA (Qt Platform Abstraction) platform plugin is used. It provides the basic functionality needed by Qt GUI and Qt Widgets to run against X11. Its library dependencies are described the following table.


2 Answers

Use ldd (man ldd) to show shared library dependencies. Running this on libqxcb.so

.../platforms$ ldd libqxcb.so 

shows that xcb depends on libQt5DBus.so.5 in addition to libQt5Core.so.5 and libQt5Gui.so.5 (and many other system libs). Add libQt5DBus.so.5 to your collection of shared libs and you should be ready to move on.

like image 178
Abe Mishler Avatar answered Sep 24 '22 14:09

Abe Mishler


As was posted earlier, you need to make sure you install the platform plugins when you deploy your application. Depending on how you want to deploy things, there are two methods to tell your application where the platform plugins (e.g. platforms/plugins/libqxcb.so) are at runtime which may work for you.

The first is to export the path to the directory through the QT_QPA_PLATFORM_PLUGIN_PATH variable.

QT_QPA_PLATFORM_PLUGIN_PATH=path/to/plugins ./my_qt_app 

or

export QT_QPA_PLATFORM_PLUGIN_PATH=path/to/plugins ./my_qt_app 

The other option, which I prefer is to create a qt.conf file in the same directory as your executable. The contents of which would be:

[Paths] Plugins=/path/to/plugins 

More information regarding this can be found here and at using qt.conf

like image 28
bossbarber Avatar answered Sep 24 '22 14:09

bossbarber