मैंने अपना बाइनरी शुरू करने की कोशिश की, क्यूटी के साथ संकलित 5.7
, उबंटू 16.04 एलटीएस पर जहां क्यूटी 5.5
पूर्वस्थापित है। यह काम नहीं किया।
सबसे पहले, मैंने बाइनरी का निरीक्षण किया ldd
था जैसा कि यहां सुझाया गया था, और "संतुष्ट" सभी "निर्भरता नहीं मिली"। तब इस कुख्यात This application failed to start because it could not find or load the Qt platform plugin "xcb"
त्रुटि को फेंक दिया गया था।
लिनक्स में इसे कैसे हल करें
सबसे पहले आपको platforms
निर्देशिका बनाना चाहिए जहां आपका बाइनरी है, क्योंकि यह वह जगह है जहां क्यूटी एक्ससीबी लाइब्रेरी के लिए दिखता है। 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=.
)। सभी आश्रितों के संतुष्ट होने तक इस प्रक्रिया को दोहराएं।
के लेखक को पुनश्च धन्यवाद इस उत्तर के लिए QT_DEBUG_PLUGINS=1
।