Forum: PC-Programmierung QT auf Beaglebone Black - libGLESv2.so.1 wird nicht gefunden


von Andreas G. (andreasgs)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

Ich möchte auf dem BBB eine QT Applikation entwicklen. Dazu arbeite ich 
grade das Tutorial von TI durch.

http://processors.wiki.ti.com/index.php/Sitara_Linux_Training:_Hands_on_with_QT?keyMatch=hands%20on%20qt&tisearch=Search-EN

Ich habe eine VM erstellt und hier das SDK für den BBB installiert. Hier 
habe ich auch die Helloworld compiliert. Nun hänge ich grad beim Punkt 
LAP1 22.

Wenn ich jetzt nach Make die helloworld von der VM aus das BBB 
verschiebe und mit ./helloworld aufrufe kommt der Fehler:
1
debian@beaglebone:~$ ./helloworld
2
./helloworld: error while loading shared libraries: libGLESv2.so.1: cannot open shared object file: No such file or directory

Folgende DLLs werden vom helloworld benötigt.
1
debian@beaglebone:~$ ldd helloworld
2
  linux-vdso.so.1 (0xbec48000)
3
  libQt5Widgets.so.5 => /usr/lib/arm-linux-gnueabihf/libQt5Widgets.so.5 (0xb6b68000)
4
  libQt5Gui.so.5 => /usr/lib/arm-linux-gnueabihf/libQt5Gui.so.5 (0xb683e000)
5
  libQt5Core.so.5 => /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5 (0xb64ca000)
6
  libGLESv2.so.1 => not found
7
  libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb64a6000)
8
  libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xb639a000)
9
  libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb6322000)
10
  libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb62f9000)
11
  libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb620b000)
12
  libGLESv2.so.2 => /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2 (0xb61f2000)
13
  /lib/ld-linux-armhf.so.3 (0xb6f94000)
14
  libharfbuzz.so.0 => /usr/lib/arm-linux-gnueabihf/libharfbuzz.so.0 (0xb6176000)
15
  libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0xb6154000)
16
  libpng16.so.16 => /usr/lib/arm-linux-gnueabihf/libpng16.so.16 (0xb6124000)
17
  libicui18n.so.57 => /usr/lib/arm-linux-gnueabihf/libicui18n.so.57 (0xb5f77000)
18
  libicuuc.so.57 => /usr/lib/arm-linux-gnueabihf/libicuuc.so.57 (0xb5e4e000)
19
  libpcre16.so.3 => /usr/lib/arm-linux-gnueabihf/libpcre16.so.3 (0xb5df6000)
20
  libdouble-conversion.so.1 => /usr/lib/arm-linux-gnueabihf/libdouble-conversion.so.1 (0xb5dd8000)
21
  libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xb5dc5000)
22
  libglib-2.0.so.0 => /lib/arm-linux-gnueabihf/libglib-2.0.so.0 (0xb5cea000)
23
  librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0xb5cd4000)
24
  libdrm.so.2 => /usr/lib/arm-linux-gnueabihf/libdrm.so.2 (0xb5cb9000)
25
  libglapi.so.0 => /usr/lib/arm-linux-gnueabihf/libglapi.so.0 (0xb5c85000)
26
  libfreetype.so.6 => /usr/lib/arm-linux-gnueabihf/libfreetype.so.6 (0xb5c0c000)
27
  libgraphite2.so.3 => /usr/lib/arm-linux-gnueabihf/libgraphite2.so.3 (0xb5be1000)
28
  libicudata.so.57 => /usr/lib/arm-linux-gnueabihf/libicudata.so.57 (0xb4354000)
29
  libpcre.so.3 => /lib/arm-linux-gnueabihf/libpcre.so.3 (0xb42f5000)

Im SDK der VM für das BBB finde ich diese DLL. Ich hab sie mal auf das 
BBB ins Verzeichnis /usr/lib verschoben. Wenn ich jetzt mit ls den 
Ordnerinhalt anzeigen lasse erscheint die Datei als einziges rot, Warum? 
Danach hab ich noch ldconfig, mit der Hoffnung dass er dann die neue 
Datei im Verzeichnis findet und lädt. Dies führt jedoch dazu, dass die 
Kopierte DLL wieder aus dem Verzeichnis verschwindet.

Ich kapiers ned. Kann mir jemand hier weiterhelfen?

: Verschoben durch Moderator
von Rolf M. (rmagnus)


Lesenswert?

Andreas G. schrieb:
> Ich hab sie mal auf das BBB ins Verzeichnis /usr/lib verschoben. Wenn ich
> jetzt mit ls den Ordnerinhalt anzeigen lasse erscheint die Datei als
> einziges rot, Warum?

Vermutlich weil das nur ein Symlink ist. Wenn du nur den Link kopierst 
und nicht die Datei, auf die er verweist, zeigt der Link ins leere. Das 
wird von ls daher rot markiert. Normalerweise wird auch angezeigt, 
worauf er verweist.
Ist eh keine gute Idee, in Systemverzeichnissen von Hand 
herumzufuhrwerken. Dazu gibt's das Package-Management. Ich kann dir aber 
nicht sagen, wie die Installation bei deinem BBB dann aussehen müsste.

> Danach hab ich noch ldconfig, mit der Hoffnung dass er dann die neue
> Datei im Verzeichnis findet und lädt. Dies führt jedoch dazu, dass die
> Kopierte DLL wieder aus dem Verzeichnis verschwindet.

Ja, ldconfig entfernt solche kaputten Symlinks.

von Ralf D. (doeblitz)


Lesenswert?

Andreas G. schrieb:
[...]
> Wenn ich jetzt nach Make die helloworld von der VM aus das BBB
> verschiebe und mit ./helloworld aufrufe kommt der Fehler:
>
1
> debian@beaglebone:~$ ./helloworld
2
> ./helloworld: error while loading shared libraries: libGLESv2.so.1: 
3
> cannot open shared object file: No such file or directory

Don't do that, then. ;-)

Mal ernsthaft: das Zielsystem ist eine Debian-Installation. Der ganz 
saubere Weg, ist sich selbst ein Debian-Package zubauen und dieses auf 
dem Zeilsystem zu installieren. Dazu gibt man in den 
Package-Dependencies an, welche anderen Packages alle benötigt werden. 
Üblicherweise sind das die ganzen Runtime-Packages zu den für die 
Entwicklung benutzten Development-Packages.

Die nicht ganz so elegante Variante ist - wie von dir gemacht - einfach 
das Binary auf das Zielsystem zu kopieren. Dann muß man sich noch selbst 
darum kümmern, dass auch die benötigten Runtime-Packages installiert 
werden. Dir fehlt höchstwahrscheinlich einfach nur libgles2-mesa - 
installier das und dein Programm sollte laufen.

von Daniel (Gast)


Lesenswert?

Ralf D. schrieb:
> Dir fehlt höchstwahrscheinlich einfach nur libgles2-mesa -
> installier das und dein Programm sollte laufen.

Das BBB mit Mesa zu nutzen ist unsinnig. Nur mit der libGLESv2 aus dem 
TI Graphics SDK hat man HW-beschleunigte Grafik.

von Andreas G. (andreasgs)


Lesenswert?

Daniel schrieb:
> Ralf D. schrieb:
>> Dir fehlt höchstwahrscheinlich einfach nur libgles2-mesa -
>> installier das und dein Programm sollte laufen.
>
> Das BBB mit Mesa zu nutzen ist unsinnig. Nur mit der libGLESv2 aus dem
> TI Graphics SDK hat man HW-beschleunigte Grafik.


Kannst dazu noch etwas mehr erzählen? Ich lese daraus, dass ich auf das 
bbb das ti Grafik sdk(hast evtl. Nen link drauf?!?) herunterlade, und da 
kommt dann über die paketverwaltung die dll mitgefahren?

Mesa hab ich schon vor ein paar tagen vergeblich versucht zu laden. Das 
ging schief, es stellte sich abet raus, dass die ganze installation 
buggy war.

Soll ich nochmal nen versuch mit mesa starten, oder gleich das sdk 
installieren?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.