Saya mencoba memulai biner saya, dikompilasi dengan Qt 5.7
, di Ubuntu 16.04 LTS tempat Qt 5.5
diinstal sebelumnya. Tidak berhasil.
Pada awalnya, saya memeriksa biner itu sendiri dengan ldd
seperti yang disarankan di sini, dan "memenuhi" semua dependensi "tidak ditemukan". Kemudian This application failed to start because it could not find or load the Qt platform plugin "xcb"
kesalahan terkenal ini dilemparkan.
Cara mengatasi ini di Linux
Pertama-tama Anda harus membuat platforms
direktori tempat biner Anda berada, karena itu adalah tempat Qt mencari pustaka XCB. Salin di libqxcb.so
sana. Saya bertanya-tanya mengapa penulis jawaban lain tidak menyebutkan ini.
Kemudian Anda mungkin ingin menjalankan biner Anda dengan QT_DEBUG_PLUGINS=1
variabel lingkungan disetel untuk memeriksa dependensi mana libqxcb.so
yang tidak "terpenuhi". (Anda juga dapat menggunakan ldd
ini seperti yang disarankan dalam jawaban yang diterima).
Output perintah mungkin terlihat seperti ini:
me@xerus:/media/sf_Qt/Package$ LD_LIBRARY_PATH=. QT_DEBUG_PLUGINS=1 ./Binary
QFactoryLoader::QFactoryLoader() checking directory path "/media/sf_Qt/Package/platforms" ...
QFactoryLoader::QFactoryLoader() looking at "/media/sf_Qt/Package/platforms/libqxcb.so"
Found metadata in lib /media/sf_Qt/Package/platforms/libqxcb.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
"MetaData": {
"Keys": [
"xcb"
]
},
"className": "QXcbIntegrationPlugin",
"debug": false,
"version": 329472
}
Got keys from plugin meta data ("xcb")
loaded library "/media/sf_Qt/Package/platforms/libqxcb.so"
QLibraryPrivate::loadPlugin failed on "/media/sf_Qt/Package/platforms/libqxcb.so" : "Cannot load library /media/sf_Qt/Package/platforms/libqxcb.so: (/usr/lib/x86_64-linux-gnu/libQt5DBus.so.5: version `Qt_5' not found (required by ./libQt5XcbQpa.so.5))"
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".
Available platform plugins are: xcb.
Reinstalling the application may fix this problem.
Aborted (core dumped)
Perhatikan libQt5DBus.so.5
perpustakaan yang gagal . Salin ke jalur perpustakaan Anda, dalam kasus saya itu adalah direktori yang sama tempat biner saya (karenanya LD_LIBRARY_PATH=.
). Ulangi proses ini sampai semua dependensi terpenuhi.
PS terima kasih kepada penulis jawaban ini untuk QT_DEBUG_PLUGINS=1
.