Unsolved Native build 5.5.1 on RPI2: issue with qxcbeglwindow.cpp:85:81: error: invalid conversion
-
Hi,
I'm trying to natively build 5.5.1 on RPI2. My OS is ArchLinux ARM.
I'm using following configure:PYTHON=/usr/bin/python2 ./configure -confirm-license -opensource \ -prefix /usr \ -bindir /usr/lib/qt/bin \ -docdir /usr/share/doc/qt \ -headerdir /usr/include/qt \ -archdatadir /usr/lib/qt \ -datadir /usr/share/qt \ -sysconfdir /etc/xdg \ -examplesdir /usr/share/doc/qt/examples \ -plugin-sql-{psql,mysql,sqlite,odbc} \ -system-sqlite \ -openssl-linked \ -nomake examples \ -nomake tests \ -no-rpath \ -optimized-qmake \ -system-harfbuzz \ -no-use-gold-linker \ -no-reduce-relocations \ -no-sse2 \ -no-sse3 \ -no-ssse3 \ -no-sse4.1 \ -no-sse4.2 \ -no-avx \ -no-avx2 \ -opengl es2 \ -skip qtwebengine \ -device linux-rasp-pi2-g++ \ -device-option CROSS_COMPILE=/usr/bin/ \ -force-pkg-config \ -verbose \ -eglfs
Configure reports following:
Build parts ............ libs Mode ................... release Using sanitizer(s)...... none Using C++11 ............ yes Using gold linker....... no Using new DTAGS ........ yes Using PCH .............. yes Target compiler supports: Neon ................. yes Qt modules and options: Qt D-Bus ............... yes (loading dbus-1 at runtime) Qt Concurrent .......... yes Qt GUI ................. yes Qt Widgets ............. yes Large File ............. yes QML debugging .......... yes Use system proxies ..... no Support enabled for: Accessibility .......... yes ALSA ................... no CUPS ................... yes Evdev .................. yes FontConfig ............. yes FreeType ............... yes (system library) Glib ................... yes GStreamer .............. yes (0.10) GTK theme .............. no HarfBuzz ............... yes (system library) Iconv .................. yes ICU .................... yes Image formats: GIF .................. yes (plugin, using bundled copy) JPEG ................. yes (plugin, using system library) PNG .................. yes (in QtGui, using system library) journald ............... no libinput................ yes mtdev .................. yes (system library) Networking: getaddrinfo .......... yes getifaddrs ........... yes IPv6 ifname .......... yes libproxy.............. yes OpenSSL .............. yes (linked to the libraries) NIS .................... yes OpenGL / OpenVG: EGL .................. yes OpenGL ............... yes (OpenGL ES 2.0+) OpenVG ............... no PCRE ................... system pkg-config ............. yes PulseAudio ............. yes QPA backends: DirectFB ............. no EGLFS ................ yes EGLFS i.MX6....... . no EGLFS KMS .......... no EGLFS Mali ......... no EGLFS Raspberry Pi . yes EGLFS X11 .......... yes LinuxFB .............. yes XCB .................. yes (system library) EGL on X ........... yes GLX ................ yes MIT-SHM ............ yes Xcb-Xlib ........... yes Xcursor ............ yes (loaded at runtime) Xfixes ............. yes (loaded at runtime) Xi ................. no Xi2 ................ yes Xinerama ........... yes (loaded at runtime) Xrandr ............. yes (loaded at runtime) Xrender ............ yes XKB ................ yes XShape ............. yes XSync .............. yes XVideo ............. yes Session management ..... yes SQL drivers: DB2 .................. no InterBase ............ yes (plugin) MySQL ................ yes (plugin) OCI .................. no ODBC ................. yes (plugin) PostgreSQL ........... yes (plugin) SQLite 2 ............. no SQLite ............... yes (plugin, using system library) TDS .................. no tslib .................. no udev ................... yes xkbcommon-x11........... yes (system library) xkbcommon-evdev......... yes zlib ................... yes (system library)
Unfortunatelly build fails with following error:
make[7]: Entering directory '/home/piotro/ABS/qt5.5/src/qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins/platforms/xcb/gl_integrations/xcb_egl' /usr/bin/g++ -c -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16 -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -O2 -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16 -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -fvisibility=hidden -fvisibility-inlines-hidden -std=c++0x -fno-exceptions -Wall -W -D_REENTRANT -fPIC -DQT_NO_TSLIB -DXCB_USE_XLIB -DXCB_USE_XINPUT2 -DXCB_USE_RENDER -DXCB_USE_SM -DXCB_USE_XLIB -DQ_FONTCONFIGDATABASE -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_PLUGIN -DQT_PLATFORMSUPPORT_LIB -DQT_XCB_QPA_LIB_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -I../../gl_integrations -I../../../xcb -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -I../../../../../../include -I../../../../../../include/QtPlatformSupport -I../../../../../../include/QtPlatformSupport/5.5.1 -I../../../../../../include/QtPlatformSupport/5.5.1/QtPlatformSupport -I../../../../../../include/QtGui/5.5.1 -I../../../../../../include/QtGui/5.5.1/QtGui -I/home/piotro/ABS/qt5.5/src/qt-everywhere-opensource-src-5.5.1/qtbase/include/QtQGui -I../../../../../../include/QtGui -I../../../../../../include/QtCore/5.5.1 -I../../../../../../include/QtCore/5.5.1/QtCore -I../../../../../../include/QtCore -I.moc -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -I../../../../../../mkspecs/devices/linux-rasp-pi2-g++ -o .obj/qxcbeglwindow.o qxcbeglwindow.cpp qxcbeglwindow.cpp: In member function 'virtual void QXcbEglWindow::create()': qxcbeglwindow.cpp:85:81: error: invalid conversion from 'xcb_window_t {aka unsigned int}' to 'EGLNativeWindowType {aka void*}' [-fpermissive] m_surface = eglCreateWindowSurface(m_glIntegration->eglDisplay(), m_config, m_window, 0); ^ In file included from qxcbeglinclude.h:43:0, from qxcbeglwindow.h:39, from qxcbeglwindow.cpp:34: /opt/vc/include/EGL/egl.h:265:31: note: initializing argument 3 of 'void* eglCreateWindowSurface(EGLDisplay, EGLConfig, EGLNativeWindowType, const EGLint*)' EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, ^ Makefile:1808: recipe for target '.obj/qxcbeglwindow.o' failed make[7]: *** [.obj/qxcbeglwindow.o] Error 1 make[7]: Leaving directory '/home/piotro/ABS/qt5.5/src/qt-everywhere-opensource-src-5.5.1/qtbase/src/plugins/platforms/xcb/gl_integrations/xcb_egl' Makefile:42: recipe for target 'sub-xcb_egl-make_first' failed make[6]: *** [sub-xcb_egl-make_first] Error 2
I'm not sure is it problem of incompatibility between RPI2 EGL and X11 windowing or
simply kind go bug in qxcbeglwindow.cpp?
If it is incompatibility thing - is there possibility to selectively disable building EGL on X11 but leaving rest as "ON".Thx in advance for help!
-
Hmm...
Really nobody can help here?
Sad..... -
Hi and welcome to devnet,
Are you following this guide ?
-
@SGaist
Thx for replay.
It's pleasure to be here!Regarding Native Build of Qt5 on a Raspberry Pi guide: yes. I'm basing on this.
It is great that we have such guide. I'm following it and this allow me to prepare build environment (dependencies, etc) on ArchLinux ARM in a way that majority of Qt5.5 components can be build. I believe it is prove that my build environment is quite OK.Unfortunately building process fails with error I mention in OP.
Now I'm in blocked mode as I don't know: is this (1)bug or rather (2)expected error because RPI EGL and X11 windowing incompatibility.
I'm assuming it is rather (1) as configure process wants to build EGL on X11.
If it wants do it then Qt developers assume this is possible......(or Qt configure wrongly wants do it platform on which it is impossible).So I need some clarification here.....
-if it is bug then how to fix it
-if RPI2 can't have EGL on X11 - how to selectively disable it.(I don't want to go with solutions like totally disabling xcb or egl)
br
Without help of somebody exactly knowing what is root cause I can't move forward
-
Since it's the xcb module, I'd try to build with Qt's provided xcb.
-
Indeed, going with bundled xcb helps. I was able to successfully build whole 5.5.1
My app works OK with EGLFS.
This time EGL on X11 is disabled by configure automatically however.
Thx for help!