“Gagal memuat plugin platform” xcb “” saat meluncurkan aplikasi qt5 di linux tanpa qt diinstal

22

Saya menulis aplikasi untuk linux yang menggunakan Qt5.

Tetapi ketika saya mencoba meluncurkannya di linux tanpa Qt SDK terinstal, output di konsol adalah:

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

Bagaimana saya bisa memperbaikinya? Mungkin saya perlu menyalin beberapa file plugin? Ketika saya menggunakan Ubuntu dengan Qt5 terinstal, tapi saya mengganti nama direktori Qt, masalah yang sama terjadi. Jadi, ia menggunakan beberapa file dari direktori qt ...

Saya telah menemukan file libqxcb.sodi direktori Qt SDK, tetapi menempatkannya di /usr/libtidak membantu.

daya penggerak
sumber

Jawaban:

12

Solusi yang tepat menjalankan perintah berikut ke terminal:

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

Itu menciptakan tautan simbolis yang terlewatkan.

Francesco
sumber
1
Ini memecahkan masalah bagi saya.
Pratik Singhal
3
Mengapa Anda menautkan file plugins/platformske /usr/bin? The platformsdirektori berisi shared library, /usr/bindigunakan untuk file biner. Bukankah seharusnya isinya platformsmasuk /usr/lib?
Nathan F.
@NathanF. setidaknya untuk instalasi saya, Qt loader mencari platform di /usr/bin/platforms(saya tidak tahu mengapa). Jadi jawaban ini juga berfungsi untuk saya: stackoverflow.com/a/25437758/2249798
m13r
12

Untuk setiap pembaca masa depan yang menemukan ini - sebelum Anda mulai (berbahaya) bermain-main dengan symlink ke perpustakaan bersama, saya sangat menyarankan Anda menjalankan

export QT_DEBUG_PLUGINS=1

dan kemudian jalankan kembali eksekusi Anda yang gagal di Terminal. Baca pesan kesalahan aktual yang dilemparkan oleh QT, karena tidak ada solusi di atas yang mengatasi penyebab kesalahan ini dalam kasus saya.

Output saya setelah dihidupkan QT_DEBUG_PLUGINSadalah:

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)

jadi saya kemudian mencari version `ZLIB_1.2.9' not found (required by /usr/lib/x86_64-linux-gnu/libpng16.so.16))kesalahannya dan mencari solusinya , yang memecahkan masalah.

SlugFrisco
sumber
2
Tidak yakin siapa yang memilih Anda. Ini memberi saya jejak yang diperlukan untuk menemukan kesalahan aktual yang relevan dengan situasi spesifik saya (dalam kasus saya libc ++. Jadi hilang dan harus diinstal dari libc ++ - dev ". Terima kasih telah memposting ini.
HBSKan
11

Saya mendapat pesan kesalahan ini ketika mencoba menjalankan "Stellarium".

Dengan strace saya menemukan bahwa file yang hilang itu libxcb-xinerama.so.0. Saya harus menginstal ulang libxcb-xinerama0untuk membuatnya berfungsi:

sudo apt-get install --reinstall libxcb-xinerama0
wmeyer
sumber
Wow, betapa berantakan perburuan ini sedang mencoba berbagai pemasangan ulang. Sangat bersyukur untuk ini.
Hendy
Ini membantu !!! terima kasih
trsvchn
6

Cobalah untuk menginstal libqt5x11extras5paket dengan perintah:
sudo apt-get install libqt5x11extras5

Nama mungkin berbeda. Anda dapat mengetahuinya dengan mencari:
sudo apt-cache search qt5 | grep 'X11 extras'

dan kamu mendapatkan nama paket sebagai hasilnya:

libqt5x11extras5 - Qt 5 X11 ekstra

Bonus_05
sumber
3

Jalankan ldd pada aplikasi Anda yang dapat dieksekusi untuk melihat bagaimana ia menyelesaikan dependensi pustaka.

Juga ini adalah harus dibaca untuk memahami apa perpustakaan penting yang diperlukan dalam kasus sederhana aplikasi gui:

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

Dorian
sumber
2

Dalam jenis ubuntu saya:

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

Bisa bekerja

李智坚
sumber
1
Ini bukan jawaban yang bagus. Harap edit untuk menjelaskan apa yang sebenarnya dilakukan perintah itu.
You'reAGitForNotUsingGit
Tidak bekerja untuk saya
Ratbert
2

Bagi mereka yang masih terjebak setelah mencoba setiap opsi lain di internet, Anda dapat melihat ke jalur yang tepat dari mana ini terkenal libqxcb.so sedang dicari, untuk membuka / memuat oleh QtApp ( VirtualBox-5.2.8adalah Qtaplikasi dalam kasus saya), menggunakan alat strace . Dalam kasus saya, karena saya membangun VirtualBox-5.2.8dari sumbernya, ia mencari libqxcb.sodi lokasi di bawah ini:
"...VirtualBox-5.2.8/out/linux.amd64/release/bin/platforms/" dan tidak di defaultjalur perpustakaan, jalur Qtinstalasi, dll. Jadi, tidak ada lddpemeriksaan, dan solusi lain yang berfungsi. Dan pengaturan QT_DEBUG_PLUGINS=1juga tidak menghasilkan log tambahan.

Menjalankan strace pada biner VirtualBox yang saya buat menggunakan Dentang / LLVM di 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
.
.
.

Itu saya hitting-the-nail-on-its-headsaat, dan saya menciptakan symlinkdari yang diinstal Qt5.10.1's platformsdirektori yang disebutkan di bawah: "...Qt5.10.1/Tools/QtCreator/lib/Qt/plugins/platforms/"ke dicari jalan yang "...VirtualBox-5.2.8/out/linux.amd64/release/bin/". Dengan demikian, VirtualBox-5.2.8dibangun dari sumber di Linux ( Ubuntu 17.10 x86_64) menggunakan Clang/LLVM, akhirnya diluncurkan dengan sukses !

Bahkan, hal lain yang menarik di sini adalah bahwa, saya telah dibangun VirtualBox-5.2.8seluruhnya menggunakan Clang/Clang++/LLVMpada Ubuntu 17.10 x86_64setelah upaya substansial - untuk FreeBSD, sudah ada port untuk membangun VirtualBoxmenggunakan clangtetapi untuk Linux, itu sangat tergantung pada GCCsaat aku melihat dan karena itu mengambil banyak usaha untuk mendapatkan ke titik ini untuk dapat berhasil membangun VirtualBox-5.2.8dari sumbernya menggunakan Clang/Clang++/LLVMon Ubuntu 17.10 x86_64for target Linux/AMD64( Ubuntu 17.10 x86_64) dan berhasil meluncurkannya setelah menyelesaikan masalah lain bersama dengan yang terkenal ini libqxcb.so.

Bersulang.


sumber
1

Ini adalah bagaimana menyelesaikan beberapa masalah ketika saya menjalankan emulator di Ubuntu 18.04.

$ vim ~ / .bashrc

Tambahkan baris berikut di akhir file. Saya menginstal Android SDK saya di/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
sumber
1

Menjalankan ini menyelesaikannya untuk saya:

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

Sepertinya ada berbagai hal yang berbeda di balik ini. Dalam kasus saya (Debian 9.7), QT_DEBUG_PLUGINS = 1 membantu melacak kembali pustaka yang hilang, dan

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

memecahkan masalah.

Antos
sumber
-3

Salin plugins/platforms/libqxcb.sodari qtinstal Anda ke platforms/libqxcb.sodalam direktori aplikasi Anda.

Adam
sumber