Я попытался запустить свой двоичный файл, скомпилированный с Qt 5.7
, на Ubuntu 16.04 LTS, где Qt 5.5
предустановлен. Это не сработало.
Сначала я проверил сам двоичный файл с помощью ldd
, как было предложено здесь, и удовлетворил все не найденные зависимости. Затем возникла эта пресловутая This application failed to start because it could not find or load the Qt platform plugin "xcb"
ошибка.
Как решить эту проблему в Linux
Во-первых, вы должны создать каталог platforms
, в котором находится ваш двоичный файл, потому что это место, где Qt ищет библиотеку XCB. Скопируйте туда libqxcb.so
. Интересно, почему авторы других ответов не упомянули об этом.
Затем вы можете запустить свой двоичный файл с установленной переменной среды QT_DEBUG_PLUGINS=1
, чтобы проверить, какие зависимости libqxcb.so
не удовлетворены. (Вы также можете использовать для этого ldd
, как это предлагается в принятом ответе).
Вывод команды может выглядеть так:
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)
Обратите внимание на неисправную libQt5DBus.so.5
библиотеку. Скопируйте его в путь к вашим библиотекам, в моем случае это был тот же каталог, где находится мой двоичный файл (отсюда LD_LIBRARY_PATH=.
). Повторяйте этот процесс, пока не будут удовлетворены все зависимости.
P.S. спасибо автору этого ответа за QT_DEBUG_PLUGINS=1
.
person
Neurotransmitter
schedule
27.09.2016
eveonline.sh
, а неeveonline
- в программе запуска есть все библиотеки, связанные со специальными версиями. - person Ondra Žižka   schedule 13.03.2017