Eu escrevi um aplicativo para linux que usa Qt5.
Mas quando estou tentando iniciá-lo no linux sem Qt SDK instalado, a saída no console é:
Falha ao carregar o plugin da plataforma "xcb". As plataformas disponíveis são:
Como posso consertar isso? Posso precisar copiar algum arquivo de plugin? Quando eu uso o ubuntu com Qt5 instalado, mas mudo o nome do diretório Qt, o mesmo problema ocorre. Então, ele usa algum arquivo do diretório Qt ...
ATUALIZAÇÃO: quando eu crio na pasta "plataformas" do dir do aplicativo com o arquivo libqxcb.so , o aplicativo ainda não inicia, mas a mensagem de erro muda:
Falha ao carregar o plugin da plataforma "xcb". As plataformas disponíveis são:
xcb
Como isso pode acontecer? Como o plugin da plataforma pode estar disponível, mas não pode ser carregado?
eveonline.sh
, nãoeveonline
- o iniciador tem todas as bibliotecas agrupadas com versões especiais.Respostas:
Use ldd (man ldd) para mostrar as dependências da biblioteca compartilhada. Executando isso em libqxcb.so
mostra que xcb depende de libQt5DBus.so.5 além de libQt5Core.so.5 e libQt5Gui.so.5 (e muitos outros libs de sistema). Adicione libQt5DBus.so.5 à sua coleção de bibliotecas compartilhadas e você estará pronto para prosseguir.
fonte
sudo apt-get install libx11-xcb1
resolveu o problema. Mas sua recomendação de usoldd
foi o que me indicou a biblioteca correta para instalar. Obrigado!ldd
, tente encontrar oplugins/platforms
diretório dentro de sua instalação do Qt. Tente copiar todo este diretório para o mesmo lugar que seu arquivo binário ou de biblioteca compartilhada. Se funcionar, você pode definirLD_LIBRARY_PATH
(hacky) ou, como mencionado na resposta de @bossbarberQT_QPA_PLATFORM_PLUGIN_PATH
,.Conforme postado anteriormente, você precisa se certificar de instalar os plug-ins de plataforma ao implantar seu aplicativo. Dependendo de como você deseja implementar as coisas, existem dois métodos para dizer ao seu aplicativo onde os plug-ins da plataforma (por exemplo, plataformas / plugins / libqxcb.so) estão em tempo de execução, o que pode funcionar para você.
A primeira é exportar o caminho para o diretório por meio da variável QT_QPA_PLATFORM_PLUGIN_PATH.
ou
A outra opção, que eu prefiro, é criar um arquivo qt.conf no mesmo diretório do seu executável. O conteúdo do qual seria:
Mais informações sobre isso podem ser encontradas aqui e em qt.conf
fonte
LD_LIBRARY_PATH
não estava funcionando, masQT_QPA_PLATFORM_PLUGIN_PATH
funcionou. Muito obrigado.Tentei iniciar meu binário, compilado com Qt
5.7
, no Ubuntu 16.04 LTS onde o Qt5.5
está pré-instalado. Não funcionou.No início, eu inspecionei o próprio binário
ldd
como foi sugerido aqui, e "satisfiz" todas as dependências "não encontradas". Então, esteThis application failed to start because it could not find or load the Qt platform plugin "xcb"
erro notório foi lançado.Como resolver isso no Linux
Primeiramente você deve criar um
platforms
diretório onde seu binário está, porque é o lugar onde o Qt procura pela biblioteca XCB. Copielibqxcb.so
aqui. Eu me pergunto por que os autores de outras respostas não mencionaram isso.Então você pode querer executar seu binário com
QT_DEBUG_PLUGINS=1
a variável de ambiente configurada para verificar quais dependênciaslibqxcb.so
não estão "satisfeitas". (Você também pode usarldd
para isso conforme sugerido na resposta aceita).A saída do comando pode ser assim:
Observe a
libQt5DBus.so.5
biblioteca com falha . Copie-o para o caminho de suas bibliotecas, no meu caso era o mesmo diretório onde meu binário está (portantoLD_LIBRARY_PATH=.
). Repita esse processo até que todas as dependências sejam satisfeitas.PS obrigado ao autor desta resposta para
QT_DEBUG_PLUGINS=1
.fonte
Ubuntu 16.04 64 bits. Eu peguei o problema sem motivos aparentemente. Na noite anterior, assisti a um filme na minha instância VideoLan, naquela noite eu gostaria de assistir a outro com VideoLan. O VLC simplesmente não queria ser executado por causa do erro na pergunta. Pesquisei um pouco no Google e encontrei a solução que resolveu meu problema: a partir de agora, o VLC pode ser executado como antes. A solução é este comando:
sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/ /usr/bin/
Não sou capaz de explicar quais são suas conseqüências, mas sei que cria algum elo simbólico ausente.
fonte
-f
--force
flag até que você realmente saiba o que está fazendo. Isso pode causar outros problemas.Tentei as partes principais de cada resposta, sem sucesso. O que finalmente corrigiu para mim foi exportar as seguintes variáveis de ambiente:
fonte
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu/
. Infelizmente ele só consertou meu VLC, não o Virtualbox que tem o mesmo erro ...Desde a versão 5, o Qt usa um sistema de abstração de plataforma (QPA) para abstrair da plataforma subjacente.
A implementação para cada plataforma é fornecida por plug-ins. Para o X11, é o plugin XCB. Veja os requisitos do Qt para X11 para mais informações sobre as dependências.
fonte
Provavelmente isso vai ajudar. Estou usando o Ubuntu 18.04 e quando instalei o Krita usando o método ppa. Eu tenho este erro:
Tentei todas as soluções que encontrei neste tópico e outras webs sem sucesso.
Finalmente, encontrei um post onde o autor menciona que é possível ativar a depuração do qt5 usando este comando simples:
Depois de adicionar este comando, executei novamente o krita . Obtive o mesmo erro, mas agora sei a causa.
Este erro impede que o "xcb" carregue corretamente. Então a solução será instalar o `libxcb-xinerama.so.0" certo? Porém, quando eu executar o comando:
Eu o lib foi instalado. Então eu usei um velho truque sim
--reinstall
Este último comando resolveu meu problema.
fonte
Pode haver muitas causas para esse problema. A chave é usar
antes de executar seu aplicativo Qt. Em seguida, inspecione a saída, que indicará a direção do erro. No meu caso foi:
Mas isso é resolvido em tópicos diferentes. Veja, por exemplo, https://stackoverflow.com/a/50097275/2408964 .
fonte
Eu enfrentei o mesmo problema após instalar o Viber. Ele tinha todas as bibliotecas qt necessárias
/opt/viber/plugins/
. Eu verifiquei dependências de/opt/viber/plugins/platforms/libqxcb.so
e encontrei dependências ausentes. Eramlibxcb-render.so.0
,libxcb-image.so.0
,libxcb-icccm.so.4
,libxcb-xkb.so.1
Então eu resolvi meu problema instalando pacotes perdidos com este bibliotecas:apt-get install libxcb-xkb1 libxcb-icccm4 libxcb-image0 libxcb-render-util0
fonte
Então, passei cerca de um dia tentando descobrir qual era o problema; tentei todas as soluções propostas, mas nenhuma funcionou como instalar libs xcb ou exportar a pasta de plugins Qt. A solução que sugeriu usar
QT_DEBUG_PLUGINS=1
para depurar o problema não me forneceu uma visão direta como na resposta - em vez disso, eu estava obtendo algo sobre símbolos não resolvidos dentro do Qt5Core.Isso me deu uma dica: e se ele estiver tentando usar arquivos diferentes de instalações Qt diferentes? Na minha máquina eu tinha a versão padrão instalada em
/home/username/Qt/
e algumas compilações locais dentro do meu projeto que compilei por mim mesmo (tenho outros kits personalizados de construção também em outros locais). Sempre que tentava usar qualquer um dos kits (instalados pela ferramenta de manutenção Qt ou construídos por mim), recebia um "erro xcb".A solução era simples: fornecer o caminho Qt através
CMAKE_PREFIX_PATH
e nãoQt5_DIR
como eu fiz, e isso resolveu o problema. Exemplo:cmake .. -DCMAKE_PREFIX_PATH=/home/username/Qt/5.11.1/gcc_64
fonte
Encontrei um problema muito semelhante com a mesma mensagem de erro. Primeiro, depure alguns ativando a impressora Qt Debug com o comando de linha de comando:
e execute novamente o aplicativo. Para mim, isso revelou o seguinte:
"Não é possível carregar a biblioteca /home/.../miniconda3/lib/python3.7/site-packages/PyQt5/Qt/plugins/platforms/libqxcb.so: (libxkbcommon-x11.so.0: não é possível abrir o arquivo de objeto compartilhado: Não existe tal arquivo ou diretório)"
"Não é possível carregar a biblioteca /home/.../miniconda3/lib/python3.7/site-packages/PyQt5/Qt/plugins/platforms/libqxcb.so: (libxkbcommon-x11.so.0: não é possível abrir o arquivo de objeto compartilhado: Não existe tal arquivo ou diretório)"
Na verdade, estava faltando libxkbcommon-x11.so.0 e libxkbcommon-x11.so.0. Em seguida, verifique sua arquitetura usando dpkg na linha de comando do Linux. (Para mim, o comando "arch" deu um resultado diferente e inútil)
Em seguida, pesquisei "libxkbcommon-x11.so.0 ubuntu 18.04 amd64" e, da mesma forma, libxkbcommon-x11.so.0, que produz esses pacotes em packages.ubuntu.com. Isso me disse, em retrospecto, sem surpresa, que estou faltando pacotes chamados libxkbcommon-x11-0 e libxkbcommon0, e que a instalação desses pacotes incluirá os arquivos necessários, mas as versões dev não. Então a solução:
fonte
No meu caso, precisei implantar dois aplicativos Qt em um convidado virtualbox do Ubuntu. Um era linha de comando ("app"), o outro baseado em GUI ("app_GUI").
Usei o "app ldd" para descobrir quais são as bibliotecas necessárias e as copiei para o convidado do Ubuntu. Enquanto o executável de linha de comando "app" funcionava bem, o executável baseado em GUI travou, gerando o erro "Falha ao carregar o plugin da plataforma" xcb ". Eu verifiquei ldd para libxcb.so, mas também não havia dependências ausentes.
O problema parecia ser que, embora eu tivesse copiado todas as bibliotecas certas, acidentalmente copiei também as bibliotecas que já estavam presentes no sistema convidado .. o que significa que (a) elas eram desnecessárias para copiá-las em primeiro lugar e (b) pior , copiá-los produziu incompatibilidades entre as bibliotecas instaladas. Pior ainda, eles eram indetectáveis pelo ldd como eu disse ..
A solução? Certifique-se de copiar as bibliotecas mostradas como ausentes pelo ldd e absolutamente nenhuma biblioteca extra .
fonte
No meu caso, arquivos de cabeçalho ausentes foram o motivo pelo qual
libxcb
não foi criado pelo Qt. Instalá-los de acordo com https://wiki.qt.io/Building_Qt_5_from_Git#Linux.2FX11 resolveu o problema:fonte
Gosto da solução com
qt.conf
.Coloque
qt.conf
próximo ao executável com as próximas linhas:E funciona perfeitamente: ^)
Para um exemplo prático:
A documentação sobre isso está aqui: https://doc.qt.io/qt-5/qt-conf.html
fonte
cd path/to/executable; vim qt.conf
, colar. Salvar e sair.Eu vinculo todas as coisas do Qt estaticamente às compilações genéricas do Linux de meus projetos de código aberto. Isso torna a vida um pouco mais fácil. Você só precisa construir versões estáticas das bibliotecas Qt primeiro. É claro que isso não pode ser aplicado a software de código fechado devido a problemas de licenciamento. A implantação de aplicativos Qt5 no Linux é atualmente um pouco problemática, porque o Ubuntu 12.04, por exemplo, não possui bibliotecas Qt5 nos repositórios de pacotes.
fonte
Eu tive esse problema e, por pressentimento, removi os Qt Configs do meu ambiente. Ou seja,
Então eu iniciei o qtcreator e ele se reconfigurou com o estado existente da máquina. Não lembrava mais onde meus projetos estavam, mas isso apenas significava que eu tinha que navegar até eles "pela primeira vez" novamente.
Mas o mais importante, ele construiu um conjunto coerente de caminhos de biblioteca, para que eu pudesse reconstruir e executar meus executáveis de projeto novamente sem que as bibliotecas xcb ou qxcb fossem perdidas.
fonte
sudo ln -sf /usr/lib/...."adapt-it"..../qt5/plugins/platforms/ / usr / bin /
Ele cria o link simbólico que perdeu. Bom para QT! Bom para VLC !!
fonte