Qt ne peut pas trouver GL / gl.h mais libGL.so existe

13

J'utilise Ubuntu 14.04 64 bits.

L'erreur de compilation que j'obtiens est:

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>
                     ^

Curieusement, je semble avoir libGL.so correctement installé et lié aux bibliothèques OpenGL installées par mon pilote d'affichage Nvidia 343 (qui, je suppose, installe également des pilotes OpenGL).

$ 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

J'ai vu des articles précédents qui suggèrent de faire

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

mais quand j'ai essayé cela, il a rétrogradé ma version OpenGL prise en charge (telle que sortie par glxinfo) en v1.4. Je ne sais pas non plus pourquoi cela est censé aider.

Voici ma sortie glxinfo.

$ 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:

Merci

ejang
la source
1
Les bibliothèques et les fichiers d'en-tête sont des choses différentes: votre système a-t-il le mesa-common-devpackage installé?
Steeldriver

Réponses:

19

Concernant pour Qt doc :

Les programmes d'installation Qt pour Linux supposent qu'un compilateur C ++, un débogueur, une marque et d'autres outils de développement sont fournis par le système d'exploitation hôte. De plus, la construction d'applications graphiques Qt nécessite l'installation de bibliothèques et d'en-têtes OpenGL. La plupart des distributions Linux n'installent pas tout cela par défaut, mais la configuration d'un environnement de développement est toujours simple.

Utilisez les commandes suivantes pour installer les exigences de base pour la création d'applications Qt:

sudo apt-get install build-essential libgl1-mesa-dev
Habibillah
la source
Pourquoi? En quoi cela vous aidera-t-il?
Tim
Si vous lisez le document que je le pointe ci-dessus, vous en connaîtrez la raison
Habibillah
17

Ah, comme le souligne @steeldriver, les en-têtes et les bibliothèques sont des choses différentes, et ce qui suit a résolu le problème:

sudo apt-get install mesa-common-dev

Cela installe les en-têtes requis.

ejang
la source
Le fait amusant est qu'il GL/gl.hest livré avec Qt, si vous installez WebEngine, sousqtwebengine/src/3rdparty/chromium/third_party/mesa/src/include/GL/gl.h
Marco Sulla