Qt 5.9 error eglfs with raspberry pi 3
-
I have compiled the latest version of qt from git 5.9.2 with latest raspibian (2017-08-16-raspbian-stretch.img) as sysroot.
I have previously install some library to compile with -opengl es2. Compilation succeeded but when I run the application I have this error :
/This application failed to start because it could not find or load the Qt platform plugin "eglfs" in "". Reinstalling the application may fix this problem. Abandon
I have all necessary libs without any unfound dependencies :
pi@raspberrypi:~/testrpi $ ls -lisa /usr/local/qt5pi/plugins/platforms total 548 260886 4 drwxr-sr-x 2 root staff 4096 août 19 14:15 . 260882 4 drwxr-sr-x 8 root staff 4096 août 19 14:32 .. 260915 8 -rwxrwxr-x 1 root staff 6976 août 19 14:15 libqeglfs.so 260932 224 -rwxrwxr-x 1 root staff 228732 août 19 14:15 libqlinuxfb.so 260930 92 -rwxrwxr-x 1 root staff 90796 août 19 14:15 libqminimalegl.so 260888 24 -rwxrwxr-x 1 root staff 21472 août 19 14:15 libqminimal.so 260890 76 -rwxrwxr-x 1 root staff 74744 août 19 14:15 libqoffscreen.so 260934 116 -rwxrwxr-x 1 root staff 116604 août 19 14:15 libqvnc.so
I have well installed libGLESv2 and libEGL and libeglfs can see them like resolved with ldd :
pi@raspberrypi:~/testrpi $ ldd /usr/local/qt5pi/plugins/platforms/libqeglfs.so linux-vdso.so.1 (0x7ebd6000) /usr/lib/arm-linux-gnueabihf/libarmmem.so (0x76f4f000) libQt5EglFSDeviceIntegration.so.5 => /usr/local/qt5pi/lib/libQt5EglFSDeviceIntegration.so.5 (0x76eda000) libQt5DBus.so.5 => /usr/local/qt5pi/lib/libQt5DBus.so.5 (0x76e6f000) libfreetype.so.6 => /usr/lib/arm-linux-gnueabihf/libfreetype.so.6 (0x76dbf000) libXext.so.6 => /usr/lib/arm-linux-gnueabihf/libXext.so.6 (0x76da0000) libX11.so.6 => /usr/lib/arm-linux-gnueabihf/libX11.so.6 (0x76c7d000) libEGL.so.1 => /usr/lib/arm-linux-gnueabihf/libEGL.so.1 (0x76c42000) libQt5Gui.so.5 => /usr/local/qt5pi/lib/libQt5Gui.so.5 (0x768ab000) libQt5Core.so.5 => /usr/local/qt5pi/lib/libQt5Core.so.5 (0x7643b000) libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0x76428000) libGLESv2.so.2 => /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2 (0x7640e000) libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0x763e5000) libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0x7629d000) libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0x76270000) libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x76131000) libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0x7610a000) libpng16.so.16 => /usr/lib/arm-linux-gnueabihf/libpng16.so.16 (0x760d0000) /lib/ld-linux-armhf.so.3 (0x76f76000) libxcb.so.1 => /usr/lib/arm-linux-gnueabihf/libxcb.so.1 (0x760a1000) libX11-xcb.so.1 => /usr/lib/arm-linux-gnueabihf/libX11-xcb.so.1 (0x7608f000) libxcb-dri2.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-dri2.so.0 (0x7607b000) libxcb-xfixes.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-xfixes.so.0 (0x76064000) libxcb-dri3.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-dri3.so.0 (0x76051000) libxcb-present.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-present.so.0 (0x7603e000) libxcb-sync.so.1 => /usr/lib/arm-linux-gnueabihf/libxcb-sync.so.1 (0x76028000) libxshmfence.so.1 => /usr/lib/arm-linux-gnueabihf/libxshmfence.so.1 (0x76016000) libwayland-client.so.0 => /usr/lib/arm-linux-gnueabihf/libwayland-client.so.0 (0x75ffc000) libwayland-server.so.0 => /usr/lib/arm-linux-gnueabihf/libwayland-server.so.0 (0x75fdf000) libgbm.so.1 => /usr/lib/arm-linux-gnueabihf/libgbm.so.1 (0x75fc4000) libexpat.so.1 => /lib/arm-linux-gnueabihf/libexpat.so.1 (0x75f92000) libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x75f13000) libdrm.so.2 => /usr/lib/arm-linux-gnueabihf/libdrm.so.2 (0x75ef6000) libglapi.so.0 => /usr/lib/arm-linux-gnueabihf/libglapi.so.0 (0x75ebd000) libXau.so.6 => /usr/lib/arm-linux-gnueabihf/libXau.so.6 (0x75eb2000) libXdmcp.so.6 => /usr/lib/arm-linux-gnueabihf/libXdmcp.so.6 (0x75e9d000) libffi.so.6 => /usr/lib/arm-linux-gnueabihf/libffi.so.6 (0x75e85000) librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0x75e6e000) libbsd.so.0 => /lib/arm-linux-gnueabihf/libbsd.so.0 (0x75e45000)
I tested setting QT_QPA_PLATFORM_PLUGIN_PATH with the location of libqeglfs.so but the same error persist :
This application failed to start because it could not find or load the Qt platform plugin "eglfs" in "/usr/local/qt5pi/plugins/platforms". Reinstalling the application may fix this problem. Abandon
configure command :
./configure -opengl es2 -device linux-rasp-pi3-g++ -device-option CROSS_COMPILE=~/opt/gcc-linaro-5.4.1-2017.05-i686_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -sysroot /mnt/rasp-pi-rootfs -opensource -confirm-license -reduce-exports -release -make libs -make tools -prefix /usr/local/qt5pi -hostprefix /usr/local/qt5pi -no-use-gold-linker
The output :
Configure summary: Building on: linux-g++ (x86_64, CPU features: mmx sse sse2) Building for: devices/linux-rasp-pi3-g++ (arm, CPU features: neon) Configuration: cross_compile compile_examples enable_new_dtags largefile neon precompile_header shared rpath release c++11 c++14 c++1z concurrent dbus reduce_exports stl Build options: Mode ................................... release Optimize release build for size ........ no Building shared libraries .............. yes Using C++ standard ..................... C++1z Using gold linker ...................... no Using new DTAGS ........................ yes Using precompiled headers .............. yes Using LTCG ............................. no Target compiler supports: NEON ................................. yes Build parts ............................ libs tools Qt modules and options: Qt Concurrent .......................... yes Qt D-Bus ............................... yes Qt D-Bus directly linked to libdbus .... no Qt Gui ................................. yes Qt Network ............................. yes Qt Sql ................................. yes Qt Testlib ............................. yes Qt Widgets ............................. yes Qt Xml ................................. yes Support enabled for: Using pkg-config ....................... yes QML debugging .......................... yes udev ................................... no Using system zlib ...................... yes Qt Core: DoubleConversion ....................... yes Using system DoubleConversion ........ no GLib ................................... no iconv .................................. yes ICU .................................... no Logging backends: journald ............................. no syslog ............................... no slog2 ................................ no Using system PCRE2 ..................... no Qt Network: getaddrinfo() .......................... yes getifaddrs() ........................... yes IPv6 ifname ............................ yes libproxy ............................... no OpenSSL ................................ no Qt directly linked to OpenSSL ........ no SCTP ................................... no Use system proxies ..................... yes Qt Gui: Accessibility .......................... yes FreeType ............................... yes Using system FreeType ................ yes HarfBuzz ............................... yes Using system HarfBuzz ................ no Fontconfig ............................. no Image formats: GIF .................................. yes ICO .................................. yes JPEG ................................. yes Using system libjpeg ............... no PNG .................................. yes Using system libpng ................ yes EGL .................................... yes OpenVG ................................. no OpenGL: Desktop OpenGL ....................... no OpenGL ES 2.0 ........................ yes OpenGL ES 3.0 ........................ yes OpenGL ES 3.1 ........................ yes Session Management ..................... yes Features used by QPA backends: evdev .................................. yes libinput ............................... no INTEGRITY HID .......................... no mtdev .................................. no tslib .................................. no xkbcommon-evdev ........................ no QPA backends: DirectFB ............................... no EGLFS .................................. yes EGLFS details: EGLFS i.Mx6 .......................... no EGLFS i.Mx6 Wayland .................. no EGLFS EGLDevice ...................... yes EGLFS GBM ............................ no EGLFS Mali ........................... no EGLFS Raspberry Pi ................... no EGL on X11 ........................... yes LinuxFB ................................ yes VNC .................................... yes Mir client ............................. no Qt Widgets: GTK+ ................................... no Styles ................................. Fusion Windows Qt PrintSupport: CUPS ................................... no Qt Sql: DB2 (IBM) .............................. no InterBase .............................. no MySql .................................. no OCI (Oracle) ........................... no ODBC ................................... no PostgreSQL ............................. no SQLite2 ................................ no SQLite ................................. yes Using system provided SQLite ......... no TDS (Sybase) ........................... no Note: Also available for Linux: linux-clang linux-icc Qt is now configured for building. Just run 'make'. Once everything is built, you must run 'make install'. Qt will be installed into '/mnt/rasp-pi-rootfs/usr/local/qt5pi'. Prior to reconfiguration, make sure you remove any leftovers from the previous build.
I need your help about this serious problem ! thanks.
-
@requinham Try to start your app with QT_DEBUG_PLUGINS variable set to get a more verbose output.
-
@requinham Is it a debug build?
QT_DEBUG_PLUGINS=1 && ./my_app
-
@requinham I mean: did you build your app in debug mode?
-
@requinham Well, if you want to debug a problem you should build in debug mode.
-
How did you managed to compile with Raspbian Stretch? I have Raspbian Stretch Lite and I don't manage to compile. It seems it doesn't find EGLFS support. I was trying to build native on the board (RPI3) with this config:
/../qt5/configure -release -opengl es2 -eglfs -no-gtk -tslib -force-pkg-config -opensource -confirm-license -make libs -device linux-rasp-pi3-g++ -optimized-qmake -reduce-exports -no-use-gold-linker -nomake examples -no-compile-examples -skip qtwebengine -qt-pcre -ssl -evdev -system-freetype -fontconfig -glib -prefix /opt/qt5pi -v
Taking a closer look at /opt/vc/lib folder on the board where the legacy VideoCore drivers are located I noticed that their names are changed. Instead of standard libEGL, libGLESv2 names I saw libbrcmEGL, libbrcmGLESv2 etc.
-
@moldovan.catalin For compiling I use raspbian stretch full version and I boot with it to install some libraries (libgles2, libgl-mesa-dri, libglew-dev, libpng, libjpeg, etc.) after this I remount my sdcard filesystem on my Ubuntu machine and I run the configure like mentioned in the first post.
I also compiled Qt 5.9.2 natively on Raspberry Pi 3 successfully and I succeeded running programs. I confirm that instead of eglfs there is brcm-eglfs and instead of libEGL and libGLESv2 there is libbrcm{EGL,GLESv2}.
I think it is a patched version for RPI. -
@jsulm Thank you for your help but no more result ! I guess the problem is when compiling in host machine because my program can't see anything in the RPI...
I succeded to compile and run latest Qt natively in RPI3. Obviously, this take more time but make something works. It must important for the rest to found the problem with this may be in fixQualifiedLibraryPaths script ! -
@moldovan.catalin You can create symbolic link in /opt/vc/lib pointing to these libraries but having old names.