“Falha ao carregar o plugin da plataforma” xcb “” ao iniciar o aplicativo qt5 no linux sem qt instalado

22

Eu escrevi um aplicativo para Linux que usa Qt5.

Mas quando estou tentando iniciá-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 uso o Ubuntu com o Qt5 instalado, mas renomeio o diretório Qt, o mesmo problema ocorre. Então, ele usa algum arquivo do diretório qt ...

Eu encontrei o arquivo libqxcb.sono diretório Qt SDK, mas colocá-lo /usr/libnão ajuda.

locomoção
fonte

Respostas:

12

A solução correta está executando o seguinte comando em um terminal:

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

Ele cria o link simbólico que está faltando.

Francesco
fonte
1
Isso resolveu o problema para mim.
Pratik Singhal
3
Por que você ligar os arquivos em plugins/platformsque /usr/bin? O platformsdiretório contém bibliotecas compartilhadas, /usr/biné usado para arquivos binários. O conteúdo de não deveria platformsentrar /usr/lib?
Nathan F.
@NathanF. pelo menos para a minha instalação, o carregador Qt procura plataformas em /usr/bin/platforms(não sei por quê). Portanto, esta resposta também funcionou para mim: stackoverflow.com/a/25437758/2249798
m13r 23/09/09
12

Para quaisquer futuros leitores que se depararem com isso - antes de começar (perigosamente) a brincar com links simbólicos para bibliotecas compartilhadas, sugiro fortemente 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, pois nenhuma das soluções acima abordou a causa desse erro no meu caso.

Minha saída após ligar QT_DEBUG_PLUGINSfoi:

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 pesquisei o version `ZLIB_1.2.9' not found (required by /usr/lib/x86_64-linux-gnu/libpng16.so.16))erro e encontrei a solução para isso , que resolveu o problema.

SlugFrisco
fonte
2
Não tenho certeza de quem votou contra você. Isso me deu os rastreamentos necessários para encontrar o erro real relevante para minha situação específica (no meu caso, libc ++. Então estava ausente e precisava ser instalado a partir do libc ++ - dev ". Obrigado por postar isso.
HBSKan
11

Eu recebi essa mensagem de erro ao tentar executar o "Stellarium".

Com strace, descobri que o arquivo estava ausente libxcb-xinerama.so.0. Eu tive que reinstalar libxcb-xinerama0para fazê-lo funcionar:

sudo apt-get install --reinstall libxcb-xinerama0
wmeyer
fonte
Uau, que confusão de caçar isso estava tentando várias reinstalações. Tão grato por isso.
Hendy
Isso ajudou !!! obrigado
trsvchn 26/11
6

Tente instalar o libqt5x11extras5pacote 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 - extras do Qt 5 X11

Bonus_05
fonte
3

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

Também é uma leitura obrigatória para entender quais bibliotecas essenciais são necessárias no caso simples de aplicação de GUI:

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

Dorian
fonte
2

No meu ubuntu digite:

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

Pode trabalhar

李智坚
fonte
1
Esta não é uma boa resposta como está. Edite para explicar o que exatamente esse comando faz.
éAGitForNotUsingGit
Não funcionou para mim
Ratbert 01/04
2

Para aqueles que ainda estão presos depois de tentar todas as outras opções disponíveis na Internet, pode procurar o caminho exato no qual esse notório libqxcb.so está sendo pesquisado, para abrir / carregar pelo Qtaplicativo ( VirtualBox-5.2.8é o Qtaplicativo no meu caso), usando o ferramenta de rastreamento . No meu caso, desde que eu estava construindo a VirtualBox-5.2.8partir de sua origem, ele estava procurando libqxcb.sono local abaixo:
"...VirtualBox-5.2.8/out/linux.amd64/release/bin/platforms/" e não nos defaultcaminhos da biblioteca, no Qtcaminho da instalação, etc. Portanto, nenhuma das lddverificações e outras soluções funcionou. E a configuração também QT_DEBUG_PLUGINS=1não produziu nenhum registro extra.

Executando strace no binário VirtualBox que construí usando 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 o meu hitting-the-nail-on-its-headmomento, e eu criei a symlinkpartir da instalação Qt5.10.1do platformsdiretório mencionados abaixo: "...Qt5.10.1/Tools/QtCreator/lib/Qt/plugins/platforms/"para o caminho que é procurado "...VirtualBox-5.2.8/out/linux.amd64/release/bin/". Assim, VirtualBox-5.2.8construído a partir da fonte no Linux ( Ubuntu 17.10 x86_64) usando Clang/LLVM, finalmente lançado com sucesso !

Na verdade, outra coisa interessante aqui é que, eu ter construído VirtualBox-5.2.8inteiramente usando Clang/Clang++/LLVMon Ubuntu 17.10 x86_64após esforço substancial - para FreeBSD, já há uma porta para a construção de VirtualBoxusar clang, mas para Linux, é fortemente dependente do GCCque eu vi e, portanto, teve um monte de esforço para obter até este ponto, para poder construir com êxito a VirtualBox-5.2.8partir de sua origem usando Clang/Clang++/LLVMon Ubuntu 17.10 x86_64for target Linux/AMD64( Ubuntu 17.10 x86_64) e iniciá-lo com sucesso depois de resolver outros problemas junto com esse notório libqxcb.so.

Felicidades.


fonte
1

É assim que resolve alguns problemas quando estou executando o emulador no Ubuntu 18.04.

$ vim ~ / .bashrc

Adicione as seguintes linhas no final do arquivo. Eu instalo 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
MZeng
fonte
1

Executando isso resolveu para mim:

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

Parece que pode haver várias coisas diferentes faltando por trás disso. No meu caso (Debian 9.7), QT_DEBUG_PLUGINS = 1 ajudou a rastrear as bibliotecas ausentes e

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

resolveu o problema.

Antos
fonte
-3

Copie plugins/platforms/libqxcb.soda sua qtinstalação para platforms/libqxcb.soo diretório do aplicativo.

Adão
fonte