Ho provato ad avviare il mio binario, compilato con Qt 5.7, su Ubuntu 16.04 LTS dove Qt 5.5è preinstallato. Non ha funzionato.
All'inizio, ho ispezionato il file binario stesso con lddcome suggerito qui e "soddisfatto" tutte le dipendenze "non trovate". Quindi questo famigerato This application failed to start because it could not find or load the Qt platform plugin "xcb"errore è stato lanciato.
Come risolverlo in Linux
Innanzitutto dovresti creare la platformsdirectory in cui si trova il tuo binario, perché è il posto in cui Qt cerca la libreria XCB. Copia libqxcb.solì. Mi chiedo perché gli autori di altre risposte non ne abbiano parlato.
Quindi potresti voler eseguire il tuo binario con QT_DEBUG_PLUGINS=1la variabile d'ambiente impostata per controllare quali dipendenzelibqxcb.so non sono "soddisfatte". (Puoi anche usare lddper questo come suggerito nella risposta accettata).
L'output del comando potrebbe essere simile a questo:
me@xerus:/media/sf_Qt/Package$ LD_LIBRARY_PATH=. QT_DEBUG_PLUGINS=1 ./Binary
QFactoryLoader::QFactoryLoader() checking directory path "/media/sf_Qt/Package/platforms" ...
QFactoryLoader::QFactoryLoader() looking at "/media/sf_Qt/Package/platforms/libqxcb.so"
Found metadata in lib /media/sf_Qt/Package/platforms/libqxcb.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
"MetaData": {
"Keys": [
"xcb"
]
},
"className": "QXcbIntegrationPlugin",
"debug": false,
"version": 329472
}
Got keys from plugin meta data ("xcb")
loaded library "/media/sf_Qt/Package/platforms/libqxcb.so"
QLibraryPrivate::loadPlugin failed on "/media/sf_Qt/Package/platforms/libqxcb.so" : "Cannot load library /media/sf_Qt/Package/platforms/libqxcb.so: (/usr/lib/x86_64-linux-gnu/libQt5DBus.so.5: version `Qt_5' not found (required by ./libQt5XcbQpa.so.5))"
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".
Available platform plugins are: xcb.
Reinstalling the application may fix this problem.
Aborted (core dumped)
Nota la libQt5DBus.so.5libreria in errore . Copialo nel percorso delle tue librerie, nel mio caso era la stessa directory in cui si trova il mio binario (quindiLD_LIBRARY_PATH=. ). Ripetere questo processo fino a quando tutte le dipendenze sono soddisfatte.
PS grazie all'autore di questa risposta per QT_DEBUG_PLUGINS=1.