qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
-
@SGaist
I'm building this project from github, https://github.com/BelledonneCommunications/linphone-desktop.
It has the everything included in its cmakelists.txt and I just need to add-DENABLE_APP_PACKAGING=YES
to create the package.
It useslinuxdeploy
andlinuxdeploy-plugin-qt
for packaging.
This is the script for packaging, https://github.com/BelledonneCommunications/linphone-desktop/blob/master/linphone-app/tools/create_appimage.shHey @SGaist , Please let me know if you need anyother information.
-
One thing I noted while running the Appimage with
QT_DEBUG_PLUGINS=1
was that it was trying to load plugins from a directory intmp
directory which does not exists. I don't know if this is the correct behaviour.
Following the log when i run the Appimage,QFactoryLoader::QFactoryLoader() checking directory path "/tmp/.mount_LinphoELXhn2/usr/plugins/platforms" ... QFactoryLoader::QFactoryLoader() looking at "/tmp/.mount_LinphoELXhn2/usr/plugins/platforms/libqxcb.so" Found metadata in lib /tmp/.mount_LinphoELXhn2/usr/plugins/platforms/libqxcb.so, metadata= { "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3", "MetaData": { "Keys": [ "xcb" ] }, "className": "QXcbIntegrationPlugin", "debug": false, "version": 329989 } Got keys from plugin meta data ("xcb") QFactoryLoader::QFactoryLoader() checking directory path "/tmp/.mount_LinphoELXhn2/usr/bin/platforms" ... Cannot load library /tmp/.mount_LinphoELXhn2/usr/plugins/platforms/libqxcb.so: (/tmp/.mount_LinphoELXhn2/usr/plugins/platforms/../../lib/libQt5XcbQpa.so.5: symbol _ZN11QFontEngine14bitmapForGlyphEj6QFixedRK10QTransform version Qt_5_PRIVATE_API not defined in file libQt5Gui.so.5 with link time reference) QLibraryPrivate::loadPlugin failed on "/tmp/.mount_LinphoELXhn2/usr/plugins/platforms/libqxcb.so" : "Cannot load library /tmp/.mount_LinphoELXhn2/usr/plugins/platforms/libqxcb.so: (/tmp/.mount_LinphoELXhn2/usr/plugins/platforms/../../lib/libQt5XcbQpa.so.5: symbol _ZN11QFontEngine14bitmapForGlyphEj6QFixedRK10QTransform version Qt_5_PRIVATE_API not defined in file libQt5Gui.so.5 with link time reference)" qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found. This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem. Available platform plugins are: xcb. [1] 7814 abort (core dumped) ./Linphone-4.5.1.AppImage
-
Hi, AppImage extracts all the files into the
/tmp
directory, so it's expected that the files exist there (as long as the app runs).
But it seems all Qt files are not from version Qt 5.12.9, the error is that libQt5XcbQpa.so.5 is looking for the function QFontEngine::bitmapForGlyph() in libQt5Gui.so.5 but it's not there. I think that function is maybe 6 years old, perhaps you any other (older) Qt version installed than 5.12.9?Edit: I greped the sources, the function signature was changed between 5.12.4 and 5.12.5:
in Qt 5.12.4:QImage QFontEngine::bitmapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform&);
in Qt 5.12.5:
QImage QFontEngine::bitmapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform&, const QColor &);
since libQt5XcbQpa.so.5 asks for the old one, most likely it's the other way around, i.e. libQt5XcbQpa.so.5 is from 5.12.4 (or older Qt version) and libQt5Gui.so.5 is from 5.12.9.
-
@hskoglund Thanks a lot for the explanation! This is great.
Actually i've installed Qt 5.12.9 with the installer and all the other dependencies were installed usingapt
which i think must be causing the mismatch in compatible versions as 18.04 ubuntu could have old packages in its repo.
So what do you suggest? should i down grade qt version or should i install newer dependency libraries by using some custom apt sources? -
In the long run the best is to do an apt remove for the apt installed Qt and just stick with Qt’s online installer (because it gives you fresher versiobns).
But you can also try to harmonize them, open a Terminal and type qtdiag (it should pick up the apt installed Qt)
Ser what version is says, then use the MaintenanceTool to downgrade to that version. -
@hskoglund Thanks for the suggestion!
Actually I did not installed the Qt using apt but all the other dependecies such as qtchooser, etc.
Maybe that is why when i ranqtdiag
, it gave the following output,qtdiag: could not find a Qt installation of ''
?
Please suggest. -
Hmm, so apt gave you a piecemeal version of Qt, however enough stuff to error out AppImage.
That older/faulty libQt5XcbQpa.so.5 should be in your /usr/lib/x86_64-linux-gnu anyways, try this in Terminal:
strings /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 | grep Qt | more
In that list should be some version markers, like Qt_5_PRIVATE_API, Qt_5 and Qt_5.9 or something similar...
Edit: just realized, there's an easier way to establish the version of that apt-flavored partial Qt installation: just list libQt5XcbQpa in Terminal, like this:
ls -l /usr/lib/x86_64-linux-gnu/libQt5Xcb*
this should show what version apt gave you...
-
@hskoglund
Yes,libQt5XcbQpa.so.5
has Qt_5_PRIVATE_API, Qt_5 and Qt_5.9 in it. Please find the whole output below._ZN14QXcbConnection19getQtSelectionOwnerEv _ZN9QtPrivate20QStringList_containsEPK11QStringListRK7QStringN2Qt15CaseSensitivityE _ZN7QObject10startTimerEiN2Qt9TimerTypeE _ZN7QObject7connectEPKS_PKcS1_S3_N2Qt14ConnectionTypeE _ZN11QMetaObject12invokeMethodEP7QObjectPKcN2Qt14ConnectionTypeE22QGenericReturnArgument16QGenericArgumentS7_S7_S7_S7_S7_S7_S7_S7_S7_ _ZN10QByteArrayC1EiN2Qt14InitializationE _ZN16QCoreApplication13testAttributeEN2Qt20ApplicationAttributeE _ZNK7QString11lastIndexOfE5QChariN2Qt15CaseSensitivityE _ZN16QCoreApplication12setAttributeEN2Qt20ApplicationAttributeEb _ZN7QStringC1EiN2Qt14InitializationE _ZNK20QPlatformIntegration18defaultWindowStateE6QFlagsIN2Qt10WindowTypeEE _ZNK11QMetaMethod6invokeEP7QObjectN2Qt14ConnectionTypeE22QGenericReturnArgument16QGenericArgumentS5_S5_S5_S5_S5_S5_S5_S5_S5_ _ZN9QKeyEventC1EN6QEvent4TypeEi6QFlagsIN2Qt16KeyboardModifierEEjjjRK7QStringbt _ZN22QWindowSystemInterface22handleContextMenuEventEP7QWindowbRK6QPointS4_6QFlagsIN2Qt16KeyboardModifierEE _ZN22QWindowSystemInterface22handleExtendedKeyEventEP7QWindowmN6QEvent4TypeEi6QFlagsIN2Qt16KeyboardModifierEEjjjRK7QStringbtb _ZNK7QString10startsWithE13QLatin1StringN2Qt15CaseSensitivityE _ZNK7QString7indexOfE13QLatin1StringiN2Qt15CaseSensitivityE _ZNK7QString8splitRefE5QCharNS_13SplitBehaviorEN2Qt15CaseSensitivityE _ZN10QBasicDrag12updateCursorEN2Qt10DropActionE _ZN15QtSharedPointer20ExternalRefCountData9getAndRefEPK7QObject _ZN22QWindowSystemInterface10handleDragEP7QWindowPK9QMimeDataRK6QPoint6QFlagsIN2Qt10DropActionEE _ZNK23QPlatformDragQtResponse10answerRectEv _ZNK23QPlatformDropQtResponse10isAcceptedEv _ZNK23QPlatformDropQtResponse14acceptedActionEv _ZN22QWindowSystemInterface10handleDropEP7QWindowPK9QMimeDataRK6QPoint6QFlagsIN2Qt10DropActionEE _ZNK13QPlatformDrag13defaultActionE6QFlagsIN2Qt10DropActionEES0_INS1_16KeyboardModifierEE _ZN22QWindowSystemInterface29handleScreenOrientationChangeEP7QScreenN2Qt17ScreenOrientationE _ZN7QObject18staticQtMetaObjectE _ZN15QPlatformScreen24setOrientationUpdateMaskE6QFlagsIN2Qt17ScreenOrientationEE _ZN22QWindowSystemInterface21handleWindowActivatedINS_15DefaultDeliveryEEEvP7QWindowN2Qt11FocusReasonE _ZN10QXcbWindow19setMotifWindowFlagsE6QFlagsIN2Qt10WindowTypeEE _ZN10QXcbWindow16handleMouseEventEjRK6QPointS2_6QFlagsIN2Qt16KeyboardModifierEENS4_16MouseEventSourceE _ZN22QWindowSystemInterface16handleMouseEventINS_15DefaultDeliveryEEEvP7QWindowmRK7QPointFS6_6QFlagsIN2Qt11MouseButtonEES7_INS8_16KeyboardModifierEENS8_16MouseEventSourceE _ZN10QXcbWindow24handleButtonReleaseEventEiiiii6QFlagsIN2Qt16KeyboardModifierEEjNS1_16MouseEventSourceE _ZN10QXcbWindow23handleMotionNotifyEventEiiii6QFlagsIN2Qt16KeyboardModifierEEjNS1_16MouseEventSourceE _ZN10QXcbWindow22handleButtonPressEventEiiiii6QFlagsIN2Qt16KeyboardModifierEEjNS1_16MouseEventSourceE _ZN22QWindowSystemInterface16handleWheelEventEP7QWindowmRK7QPointFS4_iN2Qt11OrientationE6QFlagsINS5_16KeyboardModifierEE _ZN10QXcbWindow18handleXIMouseEventEP14xcb_ge_event_tN2Qt16MouseEventSourceE _ZN14QXcbConnection17xiToQtMouseButtonEj _ZN10QXcbWindow24setNetWmStateWindowFlagsE6QFlagsIN2Qt10WindowTypeEE _ZN10QXcbWindow14setWindowStateEN2Qt11WindowStateE _ZThn16_N10QXcbWindow14setWindowStateEN2Qt11WindowStateE _ZN10QXcbWindow19doStartSystemResizeERK6QPointN2Qt6CornerE _ZN10QXcbWindow17startSystemResizeERK6QPointN2Qt6CornerE _ZN14QXcbConnection30startSystemResizeForTouchBeginEjRK6QPointN2Qt6CornerE _ZThn16_N10QXcbWindow17startSystemResizeERK6QPointN2Qt6CornerE _ZN10QXcbWindow15setWmWindowTypeE6QFlagsIN19QXcbWindowFunctions12WmWindowTypeEES0_IN2Qt10WindowTypeEE _ZN22QWindowSystemInterface24handleWindowStateChangedINS_15DefaultDeliveryEEEvP7QWindowN2Qt11WindowStateEi _ZN10QXcbWindow14setWindowFlagsE6QFlagsIN2Qt10WindowTypeEE _ZThn16_N10QXcbWindow14setWindowFlagsE6QFlagsIN2Qt10WindowTypeEE _ZN6QImage23convertToFormat_inplaceENS_6FormatE6QFlagsIN2Qt19ImageConversionFlagEE _ZNK6QImage22convertToFormat_helperENS_6FormatE6QFlagsIN2Qt19ImageConversionFlagEE _ZN15QPlatformWindow30handleContentOrientationChangeEN2Qt17ScreenOrientationE _ZN6QColorC1EN2Qt11GlobalColorE _ZN22QGuiApplicationPrivate15getPixmapCursorEN2Qt11CursorShapeE _ZNK6QImage15createAlphaMaskE6QFlagsIN2Qt19ImageConversionFlagEE _ZN7QPixmap16fromImageInPlaceER6QImage6QFlagsIN2Qt19ImageConversionFlagEE _ZN22QWindowSystemInterface16handleWheelEventEP7QWindowmRK7QPointFS4_6QPointS5_6QFlagsIN2Qt16KeyboardModifierEENS7_11ScrollPhaseENS7_16MouseEventSourceEb _ZN22QWindowSystemInterface17handleTabletEventEP7QWindowmRK7QPointFS4_ii6QFlagsIN2Qt11MouseButtonEEdiiddixS5_INS6_16KeyboardModifierEE _ZN16QLoggingCategory10setEnabledE9QtMsgTypeb _ZN22QWindowSystemInterface16handleTouchEventINS_15DefaultDeliveryEEEvP7QWindowmP12QTouchDeviceRK5QListINS_10TouchPointEE6QFlagsIN2Qt16KeyboardModifierEE _ZNK7QString7compareERKS_N2Qt15CaseSensitivityE _ZN14QFactoryLoaderC1EPKcRK7QStringN2Qt15CaseSensitivityE _ZN9QtPrivate16QStringList_joinEPK11QStringListPK5QChari _ZN6QBrushC1EN2Qt11GlobalColorENS0_10BrushStyleE _ZN6QBrushC1ERK6QColorN2Qt10BrushStyleE _ZN9QMetaType25registerConverterFunctionEPKN9QtPrivate25AbstractConverterFunctionEii _ZN9QtPrivate28QStringList_removeDuplicatesEP11QStringList _ZNK7QString5splitE5QCharNS_13SplitBehaviorEN2Qt15CaseSensitivityE _ZN7QObject11connectImplEPKS_PPvS1_S3_PN9QtPrivate15QSlotObjectBaseEN2Qt14ConnectionTypeEPKiPK11QMetaObject _ZNK7QString8endsWithE13QLatin1StringN2Qt15CaseSensitivityE _ZN6QImage4fillEN2Qt11GlobalColorE _ZNK7QString7indexOfE5QChariN2Qt15CaseSensitivityE _ZN20QEventDispatcherGlib13registerTimerEiiN2Qt9TimerTypeEP7QObject _ZN20QEventDispatcherUNIX13registerTimerEiiN2Qt9TimerTypeEP7QObject _ZNK6QImage11transformedERK10QTransformN2Qt18TransformationModeE libQt5Gui.so.5 libQt5DBus.so.5 libQt5Core.so.5 libQt5XcbQpa.so.5 Qt_5_PRIVATE_API Qt_5 Qt_5.9 Qt: XKEYBOARD extension not present on the X server. Qt: Failed to initialize XKB extension Qt: Unsupported XKB version (We want %d %d, but X server has %d %d) Qt: failed to select notify events from xcb-xkb Qt: Couldn't interpret the _XKB_RULES_NAMES property Qt: Failed to compile US keymap, shortcut handling with non-Latin keyboard layouts may not be fully functional! Qt: failed to retrieve the virtual modifier names from XKB Qt: failed to retrieve the virtual modifier map from XKB Qt: failed to get modifier mapping Qt: failed to retrieve the keyboard mapping from XKB Qt: Failed to create XKB context! Qt: Could not determine keyboard configuration data from X server, will use hard-coded keymap configuration. Qt: Failed to compile a keymap! Qt: Failed to create xkb state! Qt: couldn't get core keyboard device info XInput version %d.%d is available and Qt supports 2.2 or greater Qt: Session management error: %s org.qt-project.Qt.QPA.Xcb.QXcbGlIntegrationFactoryInterface.5.5 QtMetaTypePrivate::QSequentialIterableImpl <annotation value="QDBusMenuLayoutItem" name="org.qtproject.QtDBus.QtTypeName.Out1"/> <annotation value="QList<int>" name="org.qtproject.QtDBus.QtTypeName.In0"/> <annotation value="QDBusMenuItemList" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QList<QDBusMenuEvent>" name="org.qtproject.QtDBus.QtTypeName.In0"/> <annotation value="QList<int>" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QList<int>" name="org.qtproject.QtDBus.QtTypeName.In0"/> <annotation value="QList<int>" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QList<int>" name="org.qtproject.QtDBus.QtTypeName.Out1"/> <annotation value="QDBusMenuItemList" name="org.qtproject.QtDBus.QtTypeName.In0"/> <annotation value="QDBusMenuItemKeysList" name="org.qtproject.QtDBus.QtTypeName.In1"/> <annotation value="QXdgDBusImageVector" name="org.qtproject.QtDBus.QtTypeName"/> <annotation value="QXdgDBusImageVector" name="org.qtproject.QtDBus.QtTypeName"/> <annotation value="QXdgDBusImageVector" name="org.qtproject.QtDBus.QtTypeName"/> <annotation value="QXdgDBusToolTipStruct" name="org.qtproject.QtDBus.QtTypeName"/> Note that Qt no longer ships fonts. Deploy some (from http://dejavu-fonts.org for example) or switch to fontconfig. QtMetaTypePrivate::QPairVariantInterfaceImpl QtMetaTypePrivate::QAssociativeIterableImpl WARNING Qt AtSpiAdaptor: Could not find accessible on path: WARNING Qt AtSpiAdaptor: Could not find application interface for: WARNING Qt AtSpiAdaptor: Could not find table interface for: WARNING Qt AtSpiAdaptor: Accessible invalid: <annotation value="QSpiAttributeSet" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QSpiAttributeSet" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QSpiRangeList" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QSpiAttributeSet" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QSpiAttributeSet" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QSpiObjectReference" name="org.qtproject.QtDBus.QtTypeName"/> <annotation value="QSpiObjectReference" name="org.qtproject.QtDBus.QtTypeName"/> <annotation value="QSpiObjectReference" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QSpiObjectReference" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QSpiObjectReference" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QSpiIntList" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QSpiIntList" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QSpiObjectReference" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QSpiRect" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QSpiActionArray" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QSpiObjectReference" name="org.qtproject.QtDBus.QtTypeName"/> <annotation value="QSpiObjectReference" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QSpiObjectReferenceArray" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QSpiRelationArray" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QSpiUIntList" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QSpiAttributeSet" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QSpiObjectReference" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QSpiAccessibleCacheArray" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QSpiAccessibleCacheItem" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QSpiObjectReference" name="org.qtproject.QtDBus.QtTypeName.Out0"/> <annotation value="QSpiDeviceEvent" name="org.qtproject.QtDBus.QtTypeName.In0"/> <annotation value="QSpiDeviceEvent" name="org.qtproject.QtDBus.QtTypeName.In0"/>
Does that mean that this library is for Qt 5.9? And is not compatible with Qt 5.12.9 that we have installed with Qt installer?
We're getting the similar results for the ls command,
-rw-r--r-- 1 root root 1602 Feb 7 2020 /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.prl lrwxrwxrwx 1 root root 21 Feb 7 2020 /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so -> libQt5XcbQpa.so.5.9.5 lrwxrwxrwx 1 root root 21 Feb 7 2020 /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 -> libQt5XcbQpa.so.5.9.5 lrwxrwxrwx 1 root root 21 Feb 7 2020 /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5.9 -> libQt5XcbQpa.so.5.9.5 -rw-r--r-- 1 root root 1070840 Feb 7 2020 /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5.9.5
-
Indeed, the apt version of Qt you've got is 5.9.5. which does not play well with 5.12.9 :-(
Easiest short-term solution to get AppImage working is to try downgrade your 5.12.9 to 5.9.5 (with a bit of luck any 5.9.x version will do, but see if you can find 5.9.5 first).
(Long-term: try purging all apt-flavored Qt stuff from your Ubuntu system and rely solely on Qt's online installer.)
-
@hskoglund Thanks for the confirmation!
Actually as per the application doc, its required to be 5.12 or greater,
For Desktop : you will need Qt5 (5.12 or newer). C++11 support is required!
I've uninstalled qt5-doc and other dependent packages installed via apt and built it again but xcb error is still there.
I'm checking if there is anything else remained to be removed.
Will update. -
If those other programs are installed using apt, then apt should warn you if you issue a
sudo apt remove libqt5gui5
, then other programs are dependent on it (I think so). But I suggest yoy go for it and try the AppImage. Later, if the VLC player malfunctions, you can always do:
sudo apt install libqt5gui5
Also, about the Qt version installed by the online installer: it resides 100% in your $HOME directory, it does not touch anything in /usr/lib/x86_64-linux-gnu, nor does it need any Qt files to be installed in /usr/lib/x86_64-linux-gnu.
Only disadvantage is that, since apt is unaware of it, you have to keep it updated yourself (but Qt Creator has a nice plugin that periodically checks that for you).
-
@hskoglund Yup, when ahead with this as the primary focus right now is to get this going.
And then i ran the command to create the build as well.
But it failed as qmake was not able to find Qt.[qt/stdout] Found Qt modules: concurrent core dbus gui network qml quick quickcontrols2 quicktemplates2 svg texttospeech widgets [qt/stdout] Extra Qt modules: [qt/stdout] Using qmake: /usr/bin/qmake [qt/stdout] ERROR: Call to qmake failed: qmake: could not find a Qt installation of '' [qt/stdout] [qt/stdout] ERROR: Failed to query Qt paths using qmake -query
Should i set some environment variable or create some softlinks for installed Qt to be used?
Something of that sort should fixed this i think. -
Hmm, if that /usr/bin/qmake is still around, you should get rid of it (I think it's qtchooser):
sudo apt remove qtchooser
Then to point the linphone-desktop package to where your 5.12.9 is, on their github page it says, set these exports:
Qt5_DIR="~/Qt/5.12.9/gcc_64/lib/cmake"
PATH="~/Qt/5.12.9/gcc_64/bin/:$PATH" -
@hskoglund I believe we've found the solution to this.
The problem was ~ (tlide) was not working with .zshrc config.
Hence qmake and other binary were not being found.
I've changed it to the absolute path now.
Running the build again. Lets see :)