Không thể tải plugin nền tảng, xtbb, trong khi khởi chạy ứng dụng qt5 trên linux mà không cài đặt qt


22

Tôi đã viết ứng dụng cho linux sử dụng Qt5.

Nhưng khi tôi cố gắng khởi chạy nó trên linux mà không cài đặt Qt SDK, thì đầu ra trong giao diện điều khiển là:

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

Làm thế nào tôi có thể sửa lỗi này? Có lẽ tôi cần phải sao chép một số tập tin plugin? Khi tôi sử dụng Ubuntu với Qt5 được cài đặt, nhưng tôi đổi tên thư mục Qt, vấn đề tương tự xảy ra. Vì vậy, nó sử dụng một số tập tin từ thư mục qt ...

Tôi đã tìm thấy tệp libqxcb.sotrong thư mục Qt SDK, nhưng đặt nó vào /usr/libkhông giúp được gì.

Câu trả lời:


12

Giải pháp chính xác là chạy comand sau trên thiết bị đầu cuối:

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

Nó tạo ra liên kết tượng trưng mà nó bỏ lỡ.


1
Điều này giải quyết các vấn đề đối với tôi.
Pratik Singhal

3
Tại sao bạn liên kết các tập tin trong plugins/platformsđể /usr/bin? Thư mục platformschứa các thư viện chia sẻ, /usr/binđược sử dụng cho các tệp nhị phân. Không nên nội dung platformsđi vào /usr/lib?
Nathan F.

@NathanF. ít nhất là cho cài đặt của tôi, trình tải Qt tìm kiếm các nền tảng tại /usr/bin/platforms(tôi không biết tại sao). Vì vậy, câu trả lời này cũng có hiệu quả với tôi: stackoverflow.com/a/25437758/2249798
m13r

12

Đối với bất kỳ độc giả tương lai nào gặp phải điều này - trước khi bạn bắt đầu (nguy hiểm) loay hoay với các liên kết tượng trưng đến các thư viện được chia sẻ, tôi thực sự khuyên bạn nên chạy

export QT_DEBUG_PLUGINS=1

và sau đó chạy thất bại thực thi của bạn một lần nữa trong Terminal. Đọc thông báo lỗi thực tế do QT ném, vì không có giải pháp nào ở trên giải quyết được nguyên nhân gây ra lỗi này trong trường hợp của tôi.

Đầu ra của tôi sau khi bật QT_DEBUG_PLUGINSlà:

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)

Vì vậy, sau đó tôi đã version `ZLIB_1.2.9' not found (required by /usr/lib/x86_64-linux-gnu/libpng16.so.16))tìm ra lỗi và tìm giải pháp cho vấn đề đó, giải quyết vấn đề.


2
Không chắc ai đã bình chọn cho bạn. Điều này đã cho tôi các dấu vết cần thiết để tìm ra lỗi thực tế liên quan đến tình huống cụ thể của tôi (trong trường hợp của tôi là libc ++. Vì vậy, đã bị thiếu và phải được cài đặt từ libc ++ - dev ". Cảm ơn bạn đã đăng bài này.
HBSKan

11

Tôi đã có thông báo lỗi này khi cố chạy "Stellarium".

Với strace tôi thấy rằng các tập tin bị thiếu là libxcb-xinerama.so.0. Tôi đã phải cài đặt lại libxcb-xinerama0để làm cho nó hoạt động:

sudo apt-get install --reinstall libxcb-xinerama0

Wow, thật là một mớ hỗn độn của cuộc săn này đã thử cài đặt lại. Rất biết ơn về điều này.
Hendy

Điều này đã giúp !!! cảm ơn
trsvchn

6

Hãy thử cài đặt libqt5x11extras5gói với lệnh:
sudo apt-get install libqt5x11extras5

Tên có thể khác nhau. Bạn có thể tìm ra nó bằng cách tìm kiếm:
sudo apt-cache search qt5 | grep 'X11 extras'

và bạn nhận được tên của gói là kết quả:

libqt5x11extras5 - Qt 5 X11 bổ sung


3

Chạy ldd trên ứng dụng của bạn để thực thi để xem cách nó giải quyết các phụ thuộc thư viện.

Ngoài ra, đây là phần phải đọc để hiểu những thư viện thiết yếu nào cần thiết trong trường hợp đơn giản của ứng dụng gui:

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


2

Trong loại ubfox của tôi:

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

Có thể làm việc


1
Đây không phải là một câu trả lời tốt như nó đứng. Vui lòng chỉnh sửa để giải thích chính xác những gì lệnh đó làm.
AreAGitForNotUsingGit

Không làm việc cho tôi
Ratbert

2

Đối với những người vẫn bị mắc kẹt sau khi thử mọi tùy chọn khác trên internet, bạn có thể xem chính xác đường dẫn mà ứng dụng nổi tiếng libqxcb.so này đang tìm kiếm, để mở / tải Qtứng dụng ( VirtualBox-5.2.8Qtứng dụng trong trường hợp của tôi), sử dụng công cụ strace . Trong trường hợp của tôi, vì tôi đang xây dựng VirtualBox-5.2.8từ nguồn của nó, nó đã tìm kiếm libqxcb.soở vị trí bên dưới:
"...VirtualBox-5.2.8/out/linux.amd64/release/bin/platforms/" và không phải trong defaultđường dẫn thư viện, đường dẫn Qtcài đặt, v.v. Vì vậy, không có lddkiểm tra nào và các giải pháp khác hoạt động. Và cũng thiết lập QT_DEBUG_PLUGINS=1không tạo ra bất kỳ nhật ký bổ sung.

Chạy strace trên nhị phân VirtualBox mà tôi đã xây dựng bằng Clang / LLVM trên 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
.
.
.

Đó là tôi hitting-the-nail-on-its-headlúc này, và tôi đã tạo ra symlinktừ các cài đặt Qt5.10.1của platformsthư mục đề cập dưới đây: "...Qt5.10.1/Tools/QtCreator/lib/Qt/plugins/platforms/"vào tìm kiếm con đường đó là "...VirtualBox-5.2.8/out/linux.amd64/release/bin/". Do đó, VirtualBox-5.2.8được xây dựng từ nguồn trên Linux ( Ubuntu 17.10 x86_64) bằng cách sử dụng Clang/LLVM, cuối cùng đã khởi chạy thành công !

Trong thực tế, một điều thú vị ở đây là, tôi đã được xây dựng VirtualBox-5.2.8hoàn toàn sử dụng Clang/Clang++/LLVMtrên Ubuntu 17.10 x86_64sau khi nỗ lực đáng kể - cho FreeBSD, có đã là một cảng để xây dựng VirtualBoxsử dụng clangnhưng đối với Linux, nó phụ thuộc rất nhiều vào GCCnhư tôi đã thấy và do đó phải mất rất nhiều công sức để get đến thời điểm này để có thể xây dựng thành công VirtualBox-5.2.8từ nguồn của nó sử dụng Clang/Clang++/LLVMtrên Ubuntu 17.10 x86_64cho mục tiêu Linux/AMD64( Ubuntu 17.10 x86_64) và thành công khởi động nó sau khi giải quyết các vấn đề khác cùng với khét tiếng này libqxcb.somột.

Chúc mừng.


1

Đây là cách giải quyết một số vấn đề khi tôi đang chạy trình giả lập trên Ubuntu 18.04.

$ vim ~ / .bashrc

Thêm các dòng sau vào cuối tập tin. Tôi cài đặt SDK Android của mình tại/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

Chạy nó đã giải quyết nó cho tôi:

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

0

Dường như có thể có nhiều thứ khác nhau bị thiếu đằng sau này. Trong trường hợp của tôi (Debian 9.7), QT_DEBUG_PLUGINS = 1 đã giúp tìm lại các thư viện bị thiếu và

$ sudo apt-get cài đặt libxcb-render-produc0 libxcb-image0 libxcb-keyyms1 libxcb-icccm4

Đã giải quyết vấn đề.



-3

Sao chép plugins/platforms/libqxcb.sotừ qtcài đặt platforms/libqxcb.socủa bạn vào thư mục ứng dụng của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.