2013-08-23 8 views
61

ich QtCreator gerade neu installiert, neues Projekt angelegt (Qt Anwendung) ein bekam diese nach der Kompilierung:Qt: nicht -lGL Fehler finden

/usr/bin/ld: **cannot find -lGL** 
collect2: error: ld returned 1 exit status 
make: *** [untitled1] Error 1 
18:07:41: The process "/usr/bin/make" exited with code 2. 
Error while building/deploying project untitled1 (kit: Desktop Qt 5.1.0 GCC 32bit) 
When executing step 'Make' 

(Projekt leer ist, ich did'n begehen Alle Änderungen)

Qt Creator 2.7.2
Basierend auf Qt 5.1.0 (32 Bit)
Ubuntu 13.04

Wie löse ich dieses Problem?

+0

hast du opengl installiert? – lpapp

+0

mögliche Duplikate von [Android: Fehler libGL.so: kann keine gemeinsame Objektdatei öffnen: Keine solche Datei oder Verzeichnis] ​​(http://stackoverflow.com/questions/17417211/android-error-libgl-so-cannot-open-shared -object-file-no-so-file-or-direct) – lpapp

+1

Mögliches Duplikat von [Qt Creator Compiler-Problem unter Debian] (http://stackoverflow.com/questions/33254272/qt-creator-compiler-issue-on-- debian) –

Antwort

94

Installieren Sie das Paket "libgl1-mesa-dev":

sudo apt-get install libgl1-mesa-dev 
+2

Wie ist das die richtige Antwort? Warum sollten Sie eine Verknüpfung mit einer nicht verwendeten Bibliothek herstellen? Sollten die Linker-Flags nicht einfach "-lGL" enthalten? – Cuadue

+3

@Cuadue: Der GL im Fehler und in libgl1 -... ist für OpenGL, eine grundlegende Abhängigkeit von Qt 5.x. Dies ist ein häufiger Fehler für Entwickler beim Einrichten der Qt-Entwicklung - aber sobald sie die OpenGL-Entwicklungsbibliothek installiert haben, sehen sie sie nie wieder. – pixelgrease

+1

Sie sollten nun apt – jv110

43

Sie brauchen nichts zu installieren. ist bereits mit Ubuntu installiert, Sie müssen es nur weich verknüpfen. (Für Ubuntu 14.x getestet und 15.x, könnten für eine spätere Versionen funktionieren)

  1. Zuerst suchen Sie die GL Bibliothek
  2. es dann Link unter/usr/lib
  3. Wenn die Bibliothek fehlt, wird es kann über libgl1-mesa-dev-Paket installiert werden

Hier ist, wie Sie dies tun könnte:

$ locate libGL 
/usr/lib/i386-linux-gnu/mesa/libGL.so.1 
/usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0 
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.10 
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.10.0 
/usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.10 
/usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.10.0 
/usr/lib/x86_64-linux-gnu/libGLU.so.1 
/usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1 
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0 
/usr/lib/x86_64-linux-gnu/mesa-egl/libGLESv2.so.2 
/usr/lib/x86_64-linux-gnu/mesa-egl/libGLESv2.so.2.0.0 
$ sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 /usr/lib/libGL.so 
+0

Ja, das funktioniert. Es ist normalerweise eine gute Idee, 'ldconfig' zu starten, nachdem Sie sich wie in diesem Fall mit Shared Libraries beschäftigt haben. –

+0

Danke für die Antwort! Auf meinem System hatte ich mehrere LibGL wegen Android SDK, Steam und anderen Anwendungen. Der ursprüngliche mesa-Ordner war auch im 'i386-linux-gnu'-Ordner vorhanden. Für jeden, der diese Antwort liest, können Sie einfach die standardmäßig installierte Bibliothek in Ubuntu finden, indem Sie 'locate libGL | grep mesa 'und ändern dann den letzten' sudo ln'-Befehl, der in dieser Antwort erwähnt wird, mit der richtigen Position. –

+1

Dies funktionierte für mich auf Ubuntu 16.10, aber ich bin verwirrt, wenn es jetzt die NVidia-GPU für OpenGL-Rendering oder einen S/W-Renderer verwendet? – DavidJ

-1

dieses Problem nur eine Minute ein Gelöst gehe in suse. Führen Sie einfach den folgenden Schritt aus und QTCreator sollte einwandfrei funktionieren.

sudo zypper install --typ muster devel_basis