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.
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.
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.
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
No meu Ubuntu tipo:
sudo ln -sf /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/ /usr/bin/platforms
Pode funcionar
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
A execução disso resolveu para mim:
sudo apt-get --reinstall install libqt5dbus5 \
libqt5widgets5 libqt5network5 libqt5gui5 libqt5core5a \
libdouble-conversion1 libxcb-xinerama0
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.
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.
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
Copie plugins/platforms/libqxcb.so
do seu qt
install para platforms/libqxcb.so
no diretório do seu aplicativo.