13

I am developing some (simple) GUI applications for the RPi2 in Qt5. The setup: The code development is performed on a Windows laptop using Netbeans + Qt Designer and remotely built on the RPi running Raspbian Jessie with tools that come with it (g++ 4.9.2, Qt 5.3.2, package qt5-default), as described here. This setup generaly works just fine.

However, even a minimal example doesn't work, although builds ok. It fails to start, and libEGL warning: DRI2: failed to authenticate appears if the application has been started from the terminal.

Can't Qt run on the RPi? Otherwise please help me resolve this problem.

EDIT1: Here what I have after do performing findcommand like Alexey Vesnin suggested:

/usr/lib/arm-linux-gnueabihf/libEGL.so /usr/lib/arm-linux-gnueabihf/libEGL.so.1 /usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0 /usr/lib/chromium-browser/libs/libEGL.so /usr/lib/chromium-browser/libs/libEGL.so.TOC /opt/vc/lib/libEGL.so /opt/vc/lib/libEGL_static.a /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2 /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0 /usr/lib/arm-linux-gnueabihf/libGLESv2.so /usr/lib/chromium-browser/libs/libGLESv2.so /usr/lib/chromium-browser/libs/libGLESv2.so.TOC /opt/vc/lib/libGLESv2_static.a /opt/vc/lib/libGLESv2.so 

EDIT2: The list with additional information:

-rw-r--r-- 1 pi pi 171312 Nov 11 14:20 /usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0 -rwxr-xr-x 1 root root 107880 Nov 2 22:27 /usr/lib/chromium-browser/libs/libEGL.so -rw-r--r-- 1 root root 14189 Nov 2 22:27 /usr/lib/chromium-browser/libs/libEGL.so.TOC -rw-r--r-- 1 root root 202072 Dec 19 21:01 /opt/vc/lib/libEGL.so -rw-r--r-- 1 root root 245356 Dec 19 21:19 /opt/vc/lib/libEGL_static.a -rw-r--r-- 1 pi pi 29996 Jan 12 2016 /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0 -rwxr-xr-x 1 root root 2632816 Nov 2 22:27 /usr/lib/chromium-browser/libs/libGLESv2.so -rw-r--r-- 1 root root 29617 Nov 2 22:27 /usr/lib/chromium-browser/libs/libGLESv2.so.TOC -rw-r--r-- 1 root root 100008 Dec 19 21:19 /opt/vc/lib/libGLESv2_static.a -rw-r--r-- 1 root root 105768 Nov 25 17:35 /opt/vc/lib/libGLESv2.so 

EDIT3:

linux-vdso.so.1 (0x7ecef000) /usr/lib/arm-linux-gnueabihf/libarmmem.so (0x76f53000) libQt5Widgets.so.5 => /usr/lib/arm-linux-gnueabihf/libQt5Widgets.so.5 (0x76a25000) libQt5Gui.so.5 => /usr/lib/arm-linux-gnueabihf/libQt5Gui.so.5 (0x76655000) libQt5Core.so.5 => /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5 (0x761d0000) libGLESv2.so => /opt/vc/lib/libGLESv2.so (0x761ab000) libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0x76183000) libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0x760a6000) libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x7602b000) libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0x75ffe000) libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x75ebd000) libgobject-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgobject-2.0.so.0 (0x75e63000) libglib-2.0.so.0 => /lib/arm-linux-gnueabihf/libglib-2.0.so.0 (0x75d5f000) libX11.so.6 => /usr/lib/arm-linux-gnueabihf/libX11.so.6 (0x75c49000) libGLESv2.so.2 => /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2 (0x75c31000) /lib/ld-linux-armhf.so.3 (0x54b67000) libpng12.so.0 => /lib/arm-linux-gnueabihf/libpng12.so.0 (0x75c01000) libharfbuzz.so.0 => /usr/lib/arm-linux-gnueabihf/libharfbuzz.so.0 (0x75ba5000) libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0x75b7d000) libicui18n.so.52 => /usr/lib/arm-linux-gnueabihf/libicui18n.so.52 (0x759bd000) libicuuc.so.52 => /usr/lib/arm-linux-gnueabihf/libicuuc.so.52 (0x75874000) libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0x75861000) librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0x7584a000) libEGL.so => /opt/vc/lib/libEGL.so (0x75810000) libbcm_host.so => /opt/vc/lib/libbcm_host.so (0x757ea000) libvchiq_arm.so => /opt/vc/lib/libvchiq_arm.so (0x757d4000) libvcos.so => /opt/vc/lib/libvcos.so (0x757ba000) libffi.so.6 => /usr/lib/arm-linux-gnueabihf/libffi.so.6 (0x757aa000) libpcre.so.3 => /lib/arm-linux-gnueabihf/libpcre.so.3 (0x75736000) libxcb.so.1 => /usr/lib/arm-linux-gnueabihf/libxcb.so.1 (0x75717000) libdrm.so.2 => /usr/lib/arm-linux-gnueabihf/libdrm.so.2 (0x756fa000) libglapi.so.0 => /usr/lib/arm-linux-gnueabihf/libglapi.so.0 (0x756c1000) libfreetype.so.6 => /usr/lib/arm-linux-gnueabihf/libfreetype.so.6 (0x75629000) libgraphite2.so.3 => /usr/lib/arm-linux-gnueabihf/libgraphite2.so.3 (0x755fb000) libicudata.so.52 => /usr/lib/arm-linux-gnueabihf/libicudata.so.52 (0x73f7e000) libXau.so.6 => /usr/lib/arm-linux-gnueabihf/libXau.so.6 (0x73f73000) libXdmcp.so.6 => /usr/lib/arm-linux-gnueabihf/libXdmcp.so.6 (0x73f67000) 
3
  • Are you trying to run the application remotely? Commented Jan 27, 2017 at 14:40
  • no, I run it from the RPi Commented Jan 27, 2017 at 14:43
  • @goldilocks in case of remote running an error messages would be different Commented Jan 27, 2017 at 17:40

2 Answers 2

10

It's a usual linux and Unix problem, nothing Pi-related. Here is the problem: your libs need to be symlinked. Do sudo -s and become a root for such an operation. And let's troubleshoot it!

First, find them, like this:

# find / -name libEGL* -type f # find / -name libGLESv2* -type f 

and do this linking to the full paths to files like this:

# ln -fs /path/to/lib/libEGL.so /usr/lib/arm-linux-gnueabihf/libEGL.so # ln -fs /path/to/lib/libEGL.so /usr/lib/arm-linux-gnueabihf/libEGL.so.1 # ln -fs /path/to/lib/libGLESv2.so /usr/lib/arm-linux-gnueabihf/libGLESv2.so # ln -fs /path/to/lib/libGLESv2.so /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2 

and let the OS know what you have done and take it into account like this:

# ldconfig 

The /path/to/lib part you should replace with full path that find commands will show you. And if running from unprivileged user - make sure that it's in video group - sometimes this old part of permission settings does float up. How to check:

# getent group video | cut -d: -f3 

if it gives nothing - then it's not that case, but if it gives a number, then type your username in groups command - an example for user pi:

# groups pi 

if it does not shows video group - add it as a supplementary group, not as the main one, like this:

# usermod -a -G video pi 

this will add user pi to group video without breaking things up

UPDATE: additional check command to find out what are the files found:

# find / -name libEGL* -type f -exec ls -la {} \; # find / -name libGLESv2* -type f -exec ls -la {} \; 

UPDATE#2: Try to do this from root:

# ln -fs /opt/vc/lib/libEGL.so /usr/lib/arm-linux-gnueabihf/libEGL.so # ln -fs /opt/vc/lib/libGLESv2.so /usr/lib/arm-linux-gnueabihf/libGLESv2.so # ldconfig 

UPDATE#3: building Qt5 with bugfixes from source.

  • go here, install dependencies via apt-get (the -dev packages)
  • as root do apt-get build-dep qt5-default
  • as root do apt-get install libxcb-xinerama0-dev flex bison gperf libicu-dev libxslt-dev ruby libssl-dev libxcursor-dev libxcomposite-dev libxdamage-dev libxrandr-dev libdbus-1-dev libfontconfig1-dev libcap-dev libxtst-dev libpulse-dev libudev-dev libpci-dev libnss3-dev libasound2-dev libxss-dev libegl1-mesa-dev gperf bison libasound2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev, after that apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev

after that do this:

 # git clone https://code.qt.io/qt/qt5.git # cd qt5 # git submodule update --init 

after that link ./configure --help output for your case and we will continue

FINAL UPDATE: source build did the trick, the problem was with an outdated Qt in packages. The configuration string :

 # mkdir qt-build # cd qt-build # ../configure -opensource -static -confirm-license -release -nomake examples -openssl-runtime -prefix /usr 

Raspberry Pi build took around 40 hours and 6+Gb of storage space. Problem fixed

7
  • Comments are not for extended discussion; this conversation has been moved to chat. Commented Jan 27, 2017 at 19:46
  • 1
    around 46 hours to be more precise Commented Feb 3, 2017 at 13:32
  • but the victory is ours, finally! Commented Feb 3, 2017 at 13:33
  • 3
    I want to upvote this - but after 2 years, there's no excuse for the package maintainers to have still not fixed this :( Commented May 9, 2019 at 16:16
  • @UKMonkey not just this matter has forced me to make a Linux distro of my own flavor - the problem still multiplies :( Commented Aug 24, 2019 at 16:30
2

In my case this fixed the issue

sudo ln -s /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2 /usr/lib/arm-linux-gnueabihf/libGLESv2.so 
1
  • I think you're barking up the wrong tree looking at Qt. I just got that error trying to run mpv on a Pi. ldd says it doesn't use Qt at all. And I have a few version symlinks like the above. It's some kind of permission error involving DRI, almost like an xhost thing. Commented May 9, 2021 at 21:02

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.