linux instalar - "No se pudo cargar el complemento de la plataforma" xcb "" mientras se iniciaba la aplicación qt5 en Linux sin qt instalado




6 Answers

Use ldd (man ldd) para mostrar las dependencias de la biblioteca compartida. Ejecutando esto en libqxcb.so

.../platforms$ ldd libqxcb.so

muestra que xcb depende de libQt5DBus.so.5 además de libQt5Core.so.5 y libQt5Gui.so.5 (y muchas otras librerías del sistema). Agregue libQt5DBus.so.5 a su colección de bibliotecas compartidas y debe estar listo para continuar.

creator ubuntu

Escribí una aplicación para Linux que usa Qt5.

Pero cuando intento lanzarlo en Linux sin Qt SDK instalado, el resultado en la consola es:

Error al cargar el complemento de la plataforma "xcb". Las plataformas disponibles son:

¿Cómo puedo arreglar esto? ¿Puede ser que necesite copiar algún archivo de complemento? Cuando uso ubuntu con Qt5 instalado, pero cambio el nombre del directorio Qt, ocurre el mismo problema. Entonces, usa algún archivo del directorio Qt ...

ACTUALIZACIÓN: cuando creo en la carpeta de aplicaciones "plataformas" con el archivo libqxcb.so , la aplicación todavía no se inicia, pero el mensaje de error cambia:

Error al cargar el complemento de la plataforma "xcb". Las plataformas disponibles son:

xcb

¿Cómo puede pasar esto? ¿Cómo puede estar disponible el complemento de la plataforma pero no se puede cargar?




Traté de iniciar mi binario, compilado con Qt 5.7, en Ubuntu 16.04 LTS donde está preinstalado Qt 5.5. Es de esperar que no funcionó como es.

Al principio inspeccioné el binario con ldd como se sugirió aquí, y satisfice todas las dependencias "no encontradas". Entonces esto notorio. This application failed to start because it could not find or load the Qt platform plugin "xcb" error This application failed to start because it could not find or load the Qt platform plugin "xcb" .

Qué se debe hacer en Linux para resolver esto.

Al principio deberías crear el directorio de platforms donde está tu binario, porque es el lugar donde Qt busca la biblioteca XCB. Copie libqxcb.so allí. Me pregunto por qué los autores de otras respuestas no mencionaron esto.

A continuación, es posible que desee ejecutar su binario con QT_DEBUG_PLUGINS=1 variable de entorno establecida para comprobar qué dependencias de libqxcb.so insatisfechas. (También puede usar ldd para esto como se sugiere en la respuesta aceptada).

El resultado del comando puede verse así:

[email protected]:/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)

Tenga en cuenta la biblioteca libQt5DBus.so.5 falla. Cópielo en la ruta de su biblioteca, en mi caso era el mismo directorio donde está mi binario (de ahí LD_LIBRARY_PATH=. ). Repita este proceso hasta que todas las dependencias estén satisfechas.

PD gracias al autor de esta respuesta por QT_DEBUG_PLUGINS=1 .




Ubuntu 16.04 64bit. Tengo el problema aparentemente sin ningún motivo. La noche antes de ver una película en mi instancia de VideoLan, esa noche me gustaría ver otra con VideoLan. VLC simplemente no quería ejecutar debido al error en la pregunta. Google un poco y encontré la solución que resolvió mi problema: a partir de ahora, VLC es ejecutable como antes. La solución es esta comand:

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

No puedo explicar cuáles son sus consecuencias, pero sé que crea algún eslabón simbólico perdido.




En mi caso, necesitaba desplegar dos aplicaciones Qt en un huésped de Ubuntu virtualbox. Una era la línea de comandos ("aplicación") y la otra basada en GUI ("app_GUI").

Usé la "aplicación ldd" para averiguar cuáles son las librerías requeridas, y las copié al invitado de Ubuntu. Mientras que la "aplicación" ejecutable de la línea de comandos funcionaba bien, el ejecutable basado en GUI se colgaba y aparecía el error "No se pudo cargar el plugin de la plataforma" xcb ". Comprobé ldd para libxcb.so, pero esta tampoco tenía dependencias faltantes.

El problema parecía ser que, si bien copié todas las bibliotecas correctas, accidentalmente había copiado también bibliotecas que ya estaban presentes en el sistema de invitados ... lo que significa que (a) no eran necesarias para copiarlas en primer lugar y (b) peor , copiándolas produjo incompatibilidades entre las bibliotecas de instalación. Peor aún, eran indetectables por ldd como dije.

¿La solución? Asegúrese de copiar bibliotecas que faltan por disco duro y absolutamente ninguna biblioteca adicional .




Me gusta la solución con qt.conf .

Coloque qt.conf cerca del ejecutable con las siguientes líneas:

[Paths]
Prefix = /path/to/qtbase

Y funciona como un encanto: ^)




sudo ln -sf /usr/lib/...."adapt-it"..../qt5/plugins/platforms/ / usr / bin /

Crea el enlace simbólico que se perdió. ¡Bueno para QT! ¡Bien por VLC!




Related

linux qt xcb

Tags

linux   qt   xcb