1

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 installed some library to compile with -opengl es2. Compilation succeeded but when I run the application I got 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

I need your help about this serious problem ! thanks.

UPDATE ABOUT CONFIGURE

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.
Channa
  • 742
  • 17
  • 28
Mohamed Hamzaoui
  • 325
  • 4
  • 15
  • http://doc.qt.io/qt-5/embedded-linux.html – Alexander V Aug 20 '17 at 14:59
  • @AlexanderVX : thanks but nothing can resolve this because all mentioned things has done but problem still persist (I also checked with linuxfb.) for compiling I follow the main steps mentioned here http://wiki.qt.io/Raspberry_Pi_Beginners_Guide – Mohamed Hamzaoui Aug 20 '17 at 15:04
  • Please show the full configure command line you gave. By passing `-device rasp-pi3-vc4` your eglfs plugin shouldn't depend on any X11/wayland library. Instead it seems you're linking to open source Mesa drivers, so you need to check if everything is installed properly there. – Massimo Callegari Aug 20 '17 at 15:05
  • @MassimoCallegari I update the post with configure command and output. I used rasp-pi3 and not vc4 ? is this wrong ? – Mohamed Hamzaoui Aug 20 '17 at 15:24
  • @requinham it's not wrong. It's just that Mesa VC4 is still a work in progress, while proprietary BCM VC4 is well tested. I normally build the proprietary way. In other words: ldd of the plugin might not tell you the whole truth. Just try to ldd all the qeglfsplugin dependencies, until you find the one missing. There has to be one. – Massimo Callegari Aug 20 '17 at 15:36
  • @MassimoCallegari I checked with lddtree but no missing dependencies ! – Mohamed Hamzaoui Aug 20 '17 at 16:00
  • It seems that the part of description "when I run the application" needs to be inspected more. Run-time. What is the environment of your app? I suspect something like `export QT_QPA_PLATFORM_PLUGIN_PATH=$(QTDIR)\plugins\platforms\:/usr/local/qt5pi/plugins/platforms` may help though you've already said about that path but anyway. – Alexander V Aug 20 '17 at 19:56
  • @AlexanderVX it is really a strange behavior ! Can this be because I use the 5.9.2 version from git (it's not released) – Mohamed Hamzaoui Aug 21 '17 at 12:47
  • Cannot say but if there is a debugger to attach that will. – Alexander V Aug 21 '17 at 14:49
  • I succeeded to compile and run natively. This is not the best solution but until this problem be solved, I invite who which compile latest version of Qt for RPI to make this natively after preinstalling necessaries dependencies – Mohamed Hamzaoui Aug 21 '17 at 19:06

1 Answers1

0

I have found at least one problem.

Start with this: Your configure shows that you're using the standard device linux-rasp-pi3-g++, but your ldd shows that your app links to the Mesa version of GLES:

libGLESv2.so.2 => /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2

As far as I understand, if you use linux-rasp-pi3-g++, you have to use the Broadcom-provided GLES and EGL in /opt/vc/lib/.

Solution:

  1. uninstall official Mesa: libgles2-mesa, libegl-mesa (package names from memory)
  2. symlink every library in /opt/vc/lib/ to /usr/lib/arm-linux-gnueabihf/
  3. add missing symlinks: sudo ln -s libEGL.so libEGL.so.1 and sudo ln -s libGLESv2.so libGLESv2.so.2

Hint: try export LD_LIBRARY_PATH=/opt/vc/lib/ your-executable before you get rid of Mesa.

Michał Leon
  • 2,108
  • 1
  • 15
  • 15