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.


  • Moderators

    @requinham Try to start your app with QT_DEBUG_PLUGINS variable set to get a more verbose output.



  • @jsulm no change I have the same input. I also set QT_LOGGING_RULES="qt.qpa.*=true" but same output !


  • Moderators

    @requinham Is it a debug build?

    QT_DEBUG_PLUGINS=1 && ./my_app
    


  • @jsulm It is a release build like specified in configure command (-release)


  • Moderators

    @requinham I mean: did you build your app in debug mode?



  • @jsulm No I compile it on release mode with the same parameter as I compile qt additional libraries (qtdeclarative, qtquickcontrols, etc.)


  • Moderators

    @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 !


  • Moderators

    @moldovan.catalin You can create symbolic link in /opt/vc/lib pointing to these libraries but having old names.



Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.