Qt: -lGL-Fehler kann nicht gefunden werden


109

Ich habe gerade QtCreator neu installiert, ein neues Projekt ( Qt Application ) erstellt und dieses nach der Kompilierung erhalten:

/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 ist leer, ich habe keine Änderungen vorgenommen )

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

Wie löse ich dieses Problem?


hast du opengl installiert
lpapp


1
Mögliches Duplikat des Qt Creator-Compiler-Problems auf Debian

Antworten:


157

Sie sollten das Paket "libgl1-mesa-dev" installieren:

sudo apt install libgl1-mesa-dev

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

6
@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 für die Qt-Entwicklung. Sobald sie jedoch die OpenGL-Entwicklungsbibliothek installiert haben, sehen sie sie nie wieder.
Pixelfett

Ubuntu 20.04 wird mit den erforderlichen OpenGL - Bibliotheken, es nicht notwendig ist , alle Pakete zu installieren, müssen Sie nur verwenden Sie lneinen Link in / usr / lib zu erstellen, finden Sie destan Antwort , die 20,04 - Paket scheint nicht etwas Sinnvolles in ihm zu haben.
jrh

74

Sie müssen nichts installieren. libGList bereits mit Ubuntu installiert, Sie müssen es nur per Softlink verknüpfen. (getestet für Ubuntu 14.x und 15.x, funktioniert möglicherweise für spätere Versionen)

  1. Suchen Sie zuerst die GL-Bibliothek
  2. Dann verlinke es unter / usr / lib
  3. Wenn die Bibliothek fehlt, kann sie über das Paket libgl1-mesa-dev installiert werden

So können Sie das machen:

$ 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

1
Ja, das funktioniert. Es ist normalerweise eine gute Idee, ldconfignach dem Umgang mit gemeinsam genutzten Bibliotheken wie in diesem Fall zu arbeiten.
José Tomás Tocino

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-gnuOrdner vorhanden. Wenn Sie diese Antwort lesen, können Sie die in Ubuntu standardmäßig installierte Bibliothek leicht finden, indem Sie locate libGL | grep mesaden zuletzt sudo lnin dieser Antwort genannten Befehl ausführen und dann an der richtigen Stelle ändern .
Akash Agarwal

1
Dies funktionierte für mich unter Ubuntu 16.10, aber ich bin verwirrt, ob es jetzt die NVidia-GPU für OpenGL-Rendering oder als / w-Renderer verwendet.
DavidJ

Diese Antwort scheint die pkg-config-Frage nicht zu lösen, oder? IE: Wenn Sie qt-Build-Zeilen für die Verwendung von pkg-config --libs eingerichtet haben, gibt diese Lösung für GL immer noch nichts zurück? Um auf der sicheren Seite zu sein, habe ich einfach den Mesa-Dev installiert.
Alex Summers

3
Sie, Sir, verdienen den Keks, nicht den
Betrüger,

3

Das GUI Qt-Modul ist standardmäßig enthalten . Wenn Sie es nicht in einem Projekt verwenden möchten (z. B. ist es eine Bibliothek oder verwendet nur stdio), müssen Sie dies in der .pro-Datei angeben.

QT -= gui

Und der Linker versucht nicht, lGL zu finden, unabhängig davon, ob es installiert ist.

Mein Fall ist zugegebenermaßen etwas seltsam, da der Hauptgrund für die Verwendung von Qt darin besteht, GUI zu erstellen. Die Installation der GL-Bibliothek ist sicherlich nicht schwierig, ich wollte nur wissen, warum meine schnelle und schmutzige Hello World es wollte.


2

schreiben:

yum provides */libGL.so 

nach Bereitstellung:

yum install mesa-libGL-devel mesa-libGLU-devel


1

Mein System ist Ubuntu 16.04 auf einem x86-Computer (mit NVIDIA GeForce GPU).

Überprüfen Sie die Bibliotheksdateien in /usr/lib/x86_64-linux-gnu

ls -al /usr/lib/x86_64-linux-gnu/libG*

Wenn Sie den defekten Link sehen, installieren Sie ihn neu libgl1-mesa-glx

sudo apt install --reinstall libgl1-mesa-glx

Überprüfen Sie die Bibliothek erneut.


0

In meinem Fall: Ich habe QT 32 Bit Lib in Win10 64 Bit installiert und es ist ein Fehler aufgetreten. Ich wechsle zu allen 64 Bit und QT Creator läuft reibungslos.


-1

Dieses Problem wurde erst vor einer Minute in suse gelöst. Führen Sie einfach den folgenden Schritt aus und QTCreator sollte einwandfrei funktionieren.

sudo zypper install --type pattern devel_basis

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.