"Error al cargar el complemento de plataforma" xcb "" al iniciar la aplicación qt5 en Linux sin qt instalado

22

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

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

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

¿Cómo puedo arreglar esto? ¿Quizás necesito 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 ...

Encontré el archivo libqxcb.soen el directorio Qt SDK, pero colocarlo /usr/libno ayuda.

locomoción
fuente

Respuestas:

12

La solución correcta es ejecutar el siguiente comando en un terminal:

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

Crea el enlace simbólico que se pierde.

Francesco
fuente
1
Esto resolvió mi problema.
Pratik Singhal
3
¿Por qué vincular los archivos de plugins/platformsa /usr/bin? El platformsdirectorio contiene bibliotecas compartidas, /usr/binse utiliza para archivos binarios. ¿No deberían platformsentrar los contenidos de /usr/lib?
Nathan
@NathanF. al menos para mi instalación, el cargador Qt busca plataformas en /usr/bin/platforms(no sé por qué). Entonces esta respuesta también funcionó para mí: stackoverflow.com/a/25437758/2249798
m13r
12

Para cualquier lector futuro que se encuentre con esto, antes de comenzar (peligrosamente) a jugar con enlaces simbólicos a bibliotecas compartidas, le sugiero encarecidamente que ejecute

export QT_DEBUG_PLUGINS=1

y luego ejecute su ejecutable que falla en la Terminal. Lea el mensaje de error real emitido por QT, ya que ninguna de las soluciones anteriores abordó la causa de este error en mi caso.

Mi salida después de encender QT_DEBUG_PLUGINSfue:

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)

entonces busqué en Google el version `ZLIB_1.2.9' not found (required by /usr/lib/x86_64-linux-gnu/libpng16.so.16))error y encontré la solución a eso , lo que resolvió el problema.

SlugFrisco
fuente
2
No estoy seguro de quién te rechazó. Esto me dio los rastros necesarios para encontrar el error real relevante para mi situación específica (en mi caso libc ++. Por lo que faltaba y tuve que instalarlo desde libc ++ - dev ". Gracias por publicar esto.
HBSKan
11

Recibí este mensaje de error al intentar ejecutar "Stellarium".

Con strace descubrí que faltaba el archivo libxcb-xinerama.so.0. Tuve que reinstalar libxcb-xinerama0para que funcione:

sudo apt-get install --reinstall libxcb-xinerama0
wmeyer
fuente
Wow, qué desastre de caza estaba intentando varias reinstalaciones. Muy agradecido por esto.
Hendy
Esto ayudó !!! gracias
trsvchn
6

Intenta instalar el libqt5x11extras5paquete con el comando:
sudo apt-get install libqt5x11extras5

El nombre puede ser diferente. Puede resolverlo buscando:
sudo apt-cache search qt5 | grep 'X11 extras'

y obtienes el nombre del paquete como resultado:

libqt5x11extras5 - Qt 5 X11 extras

Bonus_05
fuente
3

Ejecute ldd en el ejecutable de su aplicación para ver cómo resuelve las dependencias de la biblioteca.

Además, esta es una lectura obligada para comprender qué bibliotecas esenciales se necesitan en el caso simple de la aplicación GUI:

http://qt-project.org/doc/qt-5/linux-deployment.html

dorio
fuente
2

En mi ubuntu escribe:

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

Puede trabajar

李智坚
fuente
1
Esta no es una buena respuesta tal como está. Edite para explicar qué hace exactamente ese comando.
You'reAGitForNotUsingGit
No funcionó para mí
Ratbert
2

Para aquellos que todavía están atrapados después de probar cualquier otra opción en Internet, puede buscar la ruta exacta desde la que se busca esta notoria libqxcb.so , para abrir / cargar la Qtaplicación ( VirtualBox-5.2.8es la Qtaplicación en mi caso), usando el herramienta strace . En mi caso, como estaba construyendo VirtualBox-5.2.8desde su fuente, estaba buscando libqxcb.soen la ubicación a continuación:
"...VirtualBox-5.2.8/out/linux.amd64/release/bin/platforms/" y no en las defaultrutas de la biblioteca, la Qtruta de instalación, etc. Por lo tanto, ninguna de las lddcomprobaciones y otras soluciones funcionaron. Y la configuración QT_DEBUG_PLUGINS=1tampoco produjo ningún registro adicional.

Ejecutando strace en el binario VirtualBox que construí usando Clang / LLVM en 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
.
.
.

Esa era mi hitting-the-nail-on-its-headmomento, y creó el symlinkde la instalación Qt5.10.1's platformsdirectorio se mencionan a continuación: "...Qt5.10.1/Tools/QtCreator/lib/Qt/plugins/platforms/"en el camino que se busca "...VirtualBox-5.2.8/out/linux.amd64/release/bin/". Por lo tanto, VirtualBox-5.2.8construido desde la fuente en Linux ( Ubuntu 17.10 x86_64) utilizando Clang/LLVM, finalmente lanzado con éxito !

De hecho, otra cosa interesante aquí es que, he construido VirtualBox-5.2.8íntegramente con Clang/Clang++/LLVMel Ubuntu 17.10 x86_64después de un esfuerzo importante - para FreeBSD, ya hay un puerto para la construcción de VirtualBoxutilizar clang, pero para Linux, es muy dependiente de GCClo que vi y por lo tanto, se tomó un gran esfuerzo para conseguir hasta este punto para poder construir con éxito VirtualBox-5.2.8desde su fuente usando Clang/Clang++/LLVMon Ubuntu 17.10 x86_64for target Linux/AMD64( Ubuntu 17.10 x86_64) y ejecutarlo con éxito después de resolver otros problemas junto con este notorio libqxcb.so.

Salud.


fuente
1

Así es como resuelvo algunos problemas cuando estoy ejecutando el emulador en Ubuntu 18.04.

$ vim ~ / .bashrc

Agregue las siguientes líneas al final del archivo. Instalo mi SDK de Android en/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
MZeng
fuente
1

Ejecutar esto me lo resolvió:

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

Parece que pueden faltar varias cosas diferentes detrás de esto. En mi caso (Debian 9.7), QT_DEBUG_PLUGINS = 1 ayudó a rastrear las bibliotecas faltantes, y

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

resuelve el problema.

Antos
fuente
-3

Copie plugins/platforms/libqxcb.sodesde su qtinstalación a platforms/libqxcb.soen el directorio de su aplicación.

Adán
fuente