"Не вдалося завантажити плагін платформи" xcb "" під час запуску програми qt5 на Linux без встановлення qt


22

Я написав додаток для linux, який використовує Qt5.

Але коли я намагаюся запустити його на Linux без встановленого Qt SDK, вихід у консолі такий:

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

Як я можу це виправити? Можливо, мені потрібно скопіювати якийсь файл плагіна? Коли я використовую Ubuntu з встановленим Qt5, але я перейменую каталог Qt, виникає та сама проблема. Отже, він використовує якийсь файл із каталогу qt ...

Я знайшов файл libqxcb.soу каталозі Qt SDK, але розміщення його /usr/libне допомагає.

Відповіді:


12

Правильне рішення запускає наступну команду на термінал:

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

Це створює символічну ланку, яку він пропустив.


1
Це вирішило для мене проблему.
Пратік Сінгал

3
Чому ви зв'язати файли в plugins/platformsс /usr/bin? platformsКаталог містить загальні бібліотеки, /usr/binвикористовуються для бінарних файлів. Чи не повинен вміст platformsзаглиблюватися /usr/lib?
Натан Ф.

@NathanF. принаймні для моєї установки, завантажувач Qt шукає платформи за адресою /usr/bin/platforms(не знаю чому). Тому ця відповідь також працював для мене: stackoverflow.com/a/25437758/2249798
m13r

12

Будь-яким майбутнім читачам, які натрапляють на це - перш ніж ви почнете (небезпечно) возитися із символьними посиланнями на спільні бібліотеки, я настійно пропоную запустити

export QT_DEBUG_PLUGINS=1

а потім знову запустіть свій несправний виконуваний файл у Терміналі. Прочитайте фактичне повідомлення про помилку, викинуте QT, оскільки жодне з перерахованих вище рішень не стосувалося причини цієї помилки в моєму випадку.

Мій вихід після включення QT_DEBUG_PLUGINS:

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)

тож я погукнув version `ZLIB_1.2.9' not found (required by /usr/lib/x86_64-linux-gnu/libpng16.so.16))помилку в Google і знайшов рішення , що вирішило проблему.


2
Не впевнений, хто за вас проголосував. Це дало мені сліди, необхідні для пошуку фактичної помилки, що відповідає моїй конкретній ситуації (у моєму випадку libc ++. Тому вона відсутня, і її потрібно було встановити з libc ++ - dev ". Дякую за повідомлення про це.
HBSKan

11

У мене виникло це повідомлення про помилку при спробі запуску "Stellarium".

З напругою я виявив, що файл, що відсутній libxcb-xinerama.so.0. Мені довелося перевстановити, libxcb-xinerama0щоб воно працювало:

sudo apt-get install --reinstall libxcb-xinerama0

Нічого собі, яка безлада полювання це намагалися різні перевстановлення. Тож вдячний за це.
Генді

Це допомогло !!! спасибі
trsvchn

6

Спробуйте встановити libqt5x11extras5пакет з командою:
sudo apt-get install libqt5x11extras5

Назва може бути різною. Ви можете зрозуміти це за допомогою пошуку:
sudo apt-cache search qt5 | grep 'X11 extras'

і ви отримаєте назву пакета в результаті:

libqt5x11extras5 - додаткові додатки Qt 5 X11


3

Запустіть ldd у своєму виконуваному додатку, щоб побачити, як він вирішує залежність бібліотеки.

Крім того, це обов'язково читається, щоб зрозуміти, які основні бібліотеки потрібні у простому випадку застосування gui:

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


2

У моєму типі ubuntu:

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

Може працювати


1
Це не є гарною відповіддю. Відредагуйте, щоб пояснити, що саме ця команда виконує.
YouAGitForNotUsingGit

Не працював для мене
Ратберт

2

Для тих, хто все ще застряг після спроб будь-якого іншого варіанту в Інтернеті, ви можете заглянути точний шлях, з якого цей горезвісний libqxcb.so пошук шукається, для відкриття / завантаження Qtдодатком ( VirtualBox-5.2.8це Qtдодаток в моєму випадку), використовуючи інструмент для розтяжки . У моєму випадку, оскільки я будував VirtualBox-5.2.8з його джерела, він шукав libqxcb.soу нижченаведеному місці:
"...VirtualBox-5.2.8/out/linux.amd64/release/bin/platforms/" а не в defaultбібліотечних контурах, шляхах Qtустановки тощо. Отже, жодна lddперевірка та інші рішення не працювали. А також налаштування QT_DEBUG_PLUGINS=1не створювало зайвих журналів.

Запуск страйку на бінарному файлі VirtualBox, який я створив за допомогою Clang / LLVM на 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
.
.
.

Це був мій hitting-the-nail-on-its-headмомент, і я створив symlinkз встановленого Qt5.10.1«s platformsдиректорії зазначеної нижче: "...Qt5.10.1/Tools/QtCreator/lib/Qt/plugins/platforms/"на шуканий шлях , який "...VirtualBox-5.2.8/out/linux.amd64/release/bin/". Таким чином, VirtualBox-5.2.8побудований з джерела на Linux ( Ubuntu 17.10 x86_64) з використанням Clang/LLVM, нарешті, успішно запущений !

Насправді, ще одна цікава річ тут є те, що я побудував , VirtualBox-5.2.8повністю використовуючи Clang/Clang++/LLVMна Ubuntu 17.10 x86_64після значного зусилля - для FreeBSD, вже є порт для будівництва з VirtualBoxвикористанням , clangале і для Linux, це сильно залежить від , GCCяк я побачив , і , отже , треба було багато зусиль , щоб отримати до цього моменту , щоб мати можливість успішно будувати VirtualBox-5.2.8зі свого джерела , використовуючи Clang/Clang++/LLVMна Ubuntu 17.10 x86_64цільову завдання Linux/AMD64( Ubuntu 17.10 x86_64) і успішно запустити його після того, як рішення інших питань , поряд з цим горезвісними libqxcb.soодин.

Ура.


1

Ось як вирішується декілька питань, коли я запускаю емулятор на Ubuntu 18.04.

$ vim ~ / .bashrc

Додайте наступні рядки в кінці файлу. Я встановлюю свій Android SDK на/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

Запуск цього вирішив це для мене:

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

0

Здається, за цим можуть бути відсутні різні речі. У моєму випадку (Debian 9.7) QT_DEBUG_PLUGINS = 1 допоміг відшукати відсутні бібліотеки, і

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

вирішив проблему.



-3

Скопіюйте plugins/platforms/libqxcb.soз qtінсталяції platforms/libqxcb.soв каталог додатків.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.