Tôi đã cố gắng khởi động tệp nhị phân của mình, được biên dịch bằng Qt 5.7
, trên Ubuntu 16.04 LTS trong đó Qt 5.5
được cài đặt sẵn. Nó không hoạt động.
Lúc đầu, tôi đã kiểm tra bản thân hệ nhị phân với ldd
như được đề xuất ở đây và "thỏa mãn" tất cả các phụ thuộc "không tìm thấy". Sau đó, This application failed to start because it could not find or load the Qt platform plugin "xcb"
lỗi khét tiếng này đã được ném ra.
Cách giải quyết vấn đề này trong Linux
Đầu tiên, bạn nên tạo platforms
thư mục chứa tệp nhị phân của bạn, vì nó là nơi Qt tìm kiếm thư viện XCB. Sao chép libqxcb.so
ở đó. Tôi tự hỏi tại sao tác giả của các câu trả lời khác không đề cập đến điều này.
Sau đó, bạn có thể muốn chạy tệp nhị phân của mình với QT_DEBUG_PLUGINS=1
bộ biến môi trường để kiểm tra xem phụ thuộc libqxcb.so
nào không "thỏa mãn". (Bạn cũng có thể sử dụngldd
cho điều này như được đề xuất trong câu trả lời được chấp nhận).
Đầu ra lệnh có thể giống như sau:
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)
Lưu ý libQt5DBus.so.5
thư viện không thành công . Sao chép nó vào đường dẫn thư viện của bạn, trong trường hợp của tôi, nó là cùng một thư mục nơi tệp nhị phân của tôi (do đó LD_LIBRARY_PATH=.
). Lặp lại quá trình này cho đến khi tất cả các phụ thuộc được thỏa mãn.
Tái bút cảm ơn tác giả của câu trả lời này cho QT_DEBUG_PLUGINS=1
.