"Impossibile caricare il plug-in della piattaforma" xcb "" durante l'avvio dell'app qt5 su Linux senza qt installato


22

Ho scritto un'applicazione per Linux che utilizza Qt5.

Ma quando sto provando a lanciarlo su Linux senza Qt SDK installato, l'output in console è:

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

Come posso risolvere questo problema? Forse devo copiare alcuni file plugin? Quando uso Ubuntu con Qt5 installato, ma rinomino la directory Qt, si verifica lo stesso problema. Quindi, utilizza alcuni file dalla directory qt ...

Ho trovato il file libqxcb.sonella directory dell'SDK Qt, ma posizionarlo /usr/libnon aiuta.

Risposte:


12

La soluzione corretta sta eseguendo il seguente comando su un terminale:

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

Crea il collegamento simbolico che manca.


1
Questo ha risolto il problema per me.
Pratik Singhal,

3
Perché colleghi i file plugins/platformsa /usr/bin? La platformsdirectory contiene librerie condivise, /usr/binviene utilizzata per i file binari. Il contenuto di non dovrebbe platformsandare dentro /usr/lib?
Nathan F.

@NathanF. almeno per la mia installazione il caricatore Qt cerca piattaforme su /usr/bin/platforms(non so perché). Così questa risposta anche funzionato per me: stackoverflow.com/a/25437758/2249798
m13r

12

A tutti i futuri lettori che si imbattono in questo - prima di iniziare (pericolosamente) a scherzare con i collegamenti simbolici alle librerie condivise, consiglio vivamente di eseguire

export QT_DEBUG_PLUGINS=1

e quindi esegui nuovamente l'eseguibile in errore nel Terminale. Leggi l'effettivo messaggio di errore generato da QT, poiché nessuna delle soluzioni precedenti ha risolto la causa di questo errore nel mio caso.

La mia uscita dopo l'accensione è QT_DEBUG_PLUGINSstata:

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)

quindi ho cercato su Google l' version `ZLIB_1.2.9' not found (required by /usr/lib/x86_64-linux-gnu/libpng16.so.16))errore e ho trovato la soluzione a ciò , che ha risolto il problema.


2
Non sono sicuro di chi ti abbia votato. Questo mi ha dato le tracce necessarie per trovare l'errore reale rilevante per la mia situazione specifica (nel mio caso libc ++. Quindi mancava e doveva essere installato da libc ++ - dev ". Grazie per aver pubblicato questo.
HBSKan

11

Ho ricevuto questo messaggio di errore durante il tentativo di eseguire "Stellarium".

Con strace ho scoperto che il file mancante era libxcb-xinerama.so.0. Ho dovuto reinstallare libxcb-xinerama0per farlo funzionare:

sudo apt-get install --reinstall libxcb-xinerama0

Wow, che casino di caccia stava provando varie reinstallazioni. Così grato per questo.
Hendy,

Questo ha aiutato !!! grazie
trsvchn il

6

Prova a installare il libqt5x11extras5pacchetto con il comando:
sudo apt-get install libqt5x11extras5

Il nome potrebbe essere diverso. Puoi capirlo cercando:
sudo apt-cache search qt5 | grep 'X11 extras'

e ottieni il nome del pacchetto come risultato:

libqt5x11extras5 - Qt 5 X11 extra



2

Nel mio ubuntu digitare:

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

Può funzionare


1
Questa non è una buona risposta così com'è. Modifica per spiegare cosa fa esattamente quel comando.
You'reAGitForNotUsingGit

Non ha funzionato per me
Ratbert

2

Per coloro che sono ancora bloccati dopo aver provato ogni altra opzione là fuori in Internet, puoi guardare il percorso esatto da cui viene ricercato questo famigerato libqxcb.so , per l'apertura / caricamento dall'app Qt( VirtualBox-5.2.8è l' Qtapp nel mio caso), usando il strumento strace . Nel mio caso, poiché stavo costruendo VirtualBox-5.2.8dalla sua fonte, stava cercando libqxcb.sonella posizione seguente:
"...VirtualBox-5.2.8/out/linux.amd64/release/bin/platforms/" e non nei defaultpercorsi della libreria, nel Qtpercorso di installazione, ecc. Quindi, nessuno dei lddcontrolli e altre soluzioni funzionavano. E anche l'impostazione QT_DEBUG_PLUGINS=1non ha prodotto alcun registro aggiuntivo.

Esecuzione di strace sul binario VirtualBox che ho creato usando Clang / LLVM su 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
.
.
.

Quello era il mio hitting-the-nail-on-its-headmomento, e ho creato il symlinkdal installata Qt5.10.1's platformsdirectory indicato di seguito: "...Qt5.10.1/Tools/QtCreator/lib/Qt/plugins/platforms/"sul sentiero che è cercato "...VirtualBox-5.2.8/out/linux.amd64/release/bin/". Così, VirtualBox-5.2.8costruito da sorgenti su Linux ( Ubuntu 17.10 x86_64) usando Clang/LLVM, finalmente lanciato con successo !

In realtà, un'altra cosa interessante è che, ho costruito VirtualBox-5.2.8interamente utilizzando Clang/Clang++/LLVMil Ubuntu 17.10 x86_64dopo lo sforzo considerevole - per FreeBSD, c'è già una porta per la costruzione di VirtualBoxutilizzo clang, ma per Linux, è fortemente dipendente da GCCcome ho visto e, quindi, ci sono voluti un sacco di sforzo per ottenere a questo punto per essere in grado di costruire con successo VirtualBox-5.2.8dalla sua fonte usando Clang/Clang++/LLVMon Ubuntu 17.10 x86_64per target Linux/AMD64( Ubuntu 17.10 x86_64) e avviarlo con successo dopo aver risolto altri problemi insieme a questo famigerato libqxcb.so.

Saluti.


1

Ecco come risolvere alcuni problemi quando eseguo l'emulatore su Ubuntu 18.04.

$ vim ~ / .bashrc

Aggiungi le seguenti righe alla fine del file. Installo il mio Android SDK su/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

1

Eseguendo questo risolto per me:

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

0

Sembra che ci possano essere varie cose diverse mancanti dietro questo. Nel mio caso (Debian 9.7), QT_DEBUG_PLUGINS = 1 ha aiutato a rintracciare le librerie mancanti e

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

problema risolto.



-3

Copiare plugins/platforms/libqxcb.sodal vostro qtinstallare a platforms/libqxcb.sonella directory dell'applicazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.