“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.

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.


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.


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

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



2

Dalam jenis ubuntu saya:

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

Bisa bekerja


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.


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

1

Menjalankan ini menyelesaikannya untuk saya:

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

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.



-3

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.