Qt kann GL / gl.h nicht finden, aber libGL.so existiert

12

Ich verwende 64-Bit-Ubuntu 14.04.

Der Kompilierungsfehler, den ich erhalte, ist:

In file included from ../../../Qt/5.4/gcc_64/include/QtOpenGL/qgl.h:39:0,
                 from ../../../Qt/5.4/gcc_64/include/QtOpenGL/qglshaderprogram.h:37,
                 from ../../../Qt/5.4/gcc_64/include/QtOpenGL/QGLShaderProgram:1,
                 from glwidget.h:5,
                 from glwidget.cpp:1:
../../../Qt/5.4/gcc_64/include/QtGui/qopengl.h:122:21: fatal error: GL/gl.h: No such file or directory
 #  include <GL/gl.h>
                     ^

Seltsamerweise habe ich libGL.so ordnungsgemäß installiert und mit den OpenGL-Bibliotheken verknüpft, die von meinem Nvidia 343-Anzeigetreiber installiert wurden (von dem ich annehme, dass er auch OpenGL-Treiber installiert).

$ ls -l /usr/lib | grep -i libgl
lrwxrwxrwx  1 root root           17 Jan 15 12:47 libGLESv1_CM.so -> libGLESv1_CM.so.1
lrwxrwxrwx  1 root root           22 Jan 15 12:47 libGLESv1_CM.so.1 -> libGLESv1_CM.so.343.36
-rwxr-xr-x  1 root root        48248 Jan 15 12:47 libGLESv1_CM.so.343.36
lrwxrwxrwx  1 root root           14 Jan 15 12:47 libGLESv2.so -> libGLESv2.so.2
lrwxrwxrwx  1 root root           19 Jan 15 12:47 libGLESv2.so.2 -> libGLESv2.so.343.36
-rwxr-xr-x  1 root root        62352 Jan 15 12:47 libGLESv2.so.343.36
-rw-r--r--  1 root root          654 Jan 15 12:47 libGL.la
lrwxrwxrwx  1 root root           10 Jan 15 12:47 libGL.so -> libGL.so.1
lrwxrwxrwx  1 root root           15 Jan 15 12:47 libGL.so.1 -> libGL.so.343.36
-rwxr-xr-x  1 root root      1274520 Jan 15 12:47 libGL.so.343.36

Ich habe einige frühere Beiträge gesehen, die dies vorschlagen

sudo apt-get install libglu1-mesa-dev freeglut3-dev mesa-common-dev

Als ich das versuchte, wurde meine unterstützte OpenGL-Version (wie von glxinfo ausgegeben) auf Version 1.4 herabgestuft. Ich bin mir auch nicht sicher, warum das helfen soll.

Hier ist meine glxinfo Ausgabe.

$ glxinfo | grep -i opengl
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GTX 970/PCIe/SSE2
OpenGL core profile version string: 4.3.0 NVIDIA 343.36
OpenGL core profile shading language version string: 4.30 NVIDIA via Cg compiler
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.4.0 NVIDIA 343.36
OpenGL shading language version string: 4.40 NVIDIA via Cg compiler
OpenGL context flags: (none)
OpenGL profile mask: (none)
OpenGL extensions:

Vielen Dank

Ejang
quelle
1
Bibliotheken und Header-Dateien sind verschiedene Dinge: Ist auf Ihrem System das mesa-common-devPaket installiert?
Steeldriver

Antworten:

19

In Bezug auf für Qt doc :

Die Qt-Installationsprogramme für Linux gehen davon aus, dass das Host-Betriebssystem einen C ++ - Compiler, einen Debugger, ein make und andere Entwicklungstools bereitstellt. Darüber hinaus müssen zum Erstellen grafischer Qt-Anwendungen OpenGL-Bibliotheken und -Header installiert werden. Die meisten Linux-Distributionen installieren nicht alle standardmäßig, aber das Einrichten einer Entwicklungsumgebung ist immer noch unkompliziert.

Verwenden Sie die folgenden Befehle, um die grundlegenden Anforderungen zum Erstellen von Qt-Anwendungen zu installieren:

sudo apt-get install build-essential libgl1-mesa-dev
Habibillah
quelle
Warum? Womit hilft das?
Tim
Wenn Sie das Dokument lesen, auf das ich oben hinweise, werden Sie den Grund kennen
Habibillah
15

Ah, wie @steeldriver hervorhebt, sind Header und Bibliotheken verschiedene Dinge, und die folgenden Schritte haben das Problem behoben:

sudo apt-get install mesa-common-dev

Dadurch werden die erforderlichen Header installiert.

Ejang
quelle