“Falha ao carregar o plugin da plataforma” xcb “” durante o lançamento do aplicativo qt5 no linux sem o qt instalado

10

Eu escrevi o aplicativo para o linux que usa o Qt5.

Mas quando eu estou tentando lançá-lo no Linux sem o Qt SDK instalado, a saída no console é:

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

Como posso consertar isso? Talvez eu precise copiar algum arquivo de plugin? Quando eu uso o Ubuntu com Qt5 instalado, mas eu renomeio o diretório Qt, o mesmo problema ocorre. Então, ele usa algum arquivo do diretório qt ...

Encontrei o arquivo libqxcb.so no diretório do Qt SDK, mas colocá-lo em /usr/lib não ajuda.

    
por locomotion 14.06.2013 / 13:56

10 respostas

10

A solução correta é executar o seguinte comando em um terminal:

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

Cria o link simbólico que perdeu.

    
por Francesco 19.10.2016 / 20:59
3

Execute o ldd no executável do aplicativo para ver como ele resolve as dependências da biblioteca.

Além disso, é uma leitura obrigatória para entender quais bibliotecas essenciais são necessárias em casos simples de aplicação de gui:

link

    
por Dorian 10.09.2014 / 10:33
2

Eu tive esta mensagem de erro ao tentar executar o "Stellarium".

Com o strace, descobri que o arquivo ausente era libxcb-xinerama.so.0 . Eu tive que reinstalar o libxcb-xinerama0 para que funcionasse:

sudo apt-get install --reinstall libxcb-xinerama0
    
por wmeyer 27.08.2018 / 20:01
2

No meu Ubuntu tipo:

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

Pode funcionar

    
por 李智坚 11.05.2016 / 03:49
2

Tente instalar o pacote libqt5x11extras5 com o comando: sudo apt-get install libqt5x11extras5

O nome pode ser diferente. Você pode descobrir isso pesquisando: sudo apt-cache search qt5 | grep 'X11 extras'

e você obtém o nome do pacote como resultado:

libqt5x11extras5 - Qt 5 X11 extras

    
por Bonus_05 09.04.2017 / 09:09
0

A execução disso resolveu para mim:

sudo apt-get --reinstall install libqt5dbus5 \
libqt5widgets5 libqt5network5 libqt5gui5 libqt5core5a \
libdouble-conversion1 libxcb-xinerama0
    
por 09.11.2018 / 00:47
0

Para qualquer futuro leitor que se deparar com isso - antes de começar (perigosamente) mexer com links simbólicos para bibliotecas compartilhadas, sugiro strongmente que você execute

export QT_DEBUG_PLUGINS=1

e, em seguida, execute o executável com falha novamente no Terminal. Leia a mensagem de erro real lançada pelo QT, uma vez que nenhuma das soluções acima abordou a causa desse erro no meu caso.

Minha saída depois de ligar QT_DEBUG_PLUGINS foi:

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)

então eu pesquisei o erro version 'ZLIB_1.2.9' not found (required by /usr/lib/x86_64-linux-gnu/libpng16.so.16)) e encontrei a solução que resolveu o problema.

    
por SlugFrisco 13.07.2018 / 05:54
0

Para aqueles que ainda estão presos depois de experimentar todas as outras opções disponíveis na Internet, você pode pesquisar o caminho exato pelo qual esse notório libqxcb.so está sendo pesquisado, para abrir / carregar por o Qt App ( VirtualBox-5.2.8 é o Qt app no meu caso), usando a ferramenta strace . No meu caso, como eu estava criando VirtualBox-5.2.8 de sua origem, estava pesquisando libqxcb.so no local abaixo:
"...VirtualBox-5.2.8/out/linux.amd64/release/bin/platforms/" e não nos caminhos da biblioteca default , Qt caminho da instalação, etc. Portanto, nenhuma das verificações ldd e outras soluções funcionaram. E também definir QT_DEBUG_PLUGINS=1 não produziu nenhum registro extra.

Correndo strace no binário do VirtualBox que construí usando o Clang / LLVM no 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
.
.
.

Esse foi meu hitting-the-nail-on-its-head moment e criei o symlink do diretório Qt5.10.1 instaladoplatforms, mencionado abaixo: "...Qt5.10.1/Tools/QtCreator/lib/Qt/plugins/platforms/" no caminho pesquisado que é "...VirtualBox-5.2.8/out/linux.amd64/release/bin/" . Assim, VirtualBox-5.2.8 criado a partir do código fonte no Linux ( Ubuntu 17.10 x86_64 ) usando Clang/LLVM , finalmente lançado com sucesso !

Na verdade, outra coisa interessante aqui é que eu criei VirtualBox-5.2.8 inteiramente usando Clang/Clang++/LLVM on Ubuntu 17.10 x86_64 após esforço substancial - para FreeBSD , já existe uma porta para criar VirtualBox usando clang mas para o Linux, é altamente dependente de GCC como eu vi e, portanto, foi preciso muito esforço para chegar a esse ponto e conseguir criar VirtualBox-5.2.8 da sua origem usando Clang/Clang++/LLVM on Ubuntu 17.10 x86_64 para o destino Linux/AMD64 ( Ubuntu 17.10 x86_64 ) e iniciá-lo com sucesso depois de resolver outros problemas junto com este notório libqxcb.so um.

Felicidades.

    
por user194850 21.03.2018 / 15:21
0

Isto é como resolver alguns problemas quando estou executando o emulador no Ubuntu 18.04.

$ vim ~/.bashrc

Adicione as seguintes linhas no final do arquivo. Eu instalei meu SDK do Android em /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
    
por MZeng 11.04.2018 / 00:46
-3

Copie plugins/platforms/libqxcb.so do seu qt install para platforms/libqxcb.so no diretório do seu aplicativo.

    
por Adam 03.10.2013 / 18:10

Tags