web-dev-qa-db-fra.com

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

J'utilise Ubuntu 14.04 64 bits.

L'erreur de compilation que je reçois est la suivante:

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

Étrangement, il me semble que libGL.so est correctement installé et lié symboliquement aux bibliothèques OpenGL installées par mon pilote d’affichage Nvidia 343 (qui, je suppose, installe également les 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 déjà lu des billets 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. De plus, je ne sais pas 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

11
ejang

Ah, comme le fait remarquer @steeldriver, les en-têtes et les bibliothèques sont des choses différentes. Le problème suivant a été résolu:

Sudo apt-get install mesa-common-dev

Cela installe les en-têtes requis.

15
ejang

En ce qui concerne pour Qt doc :

Les installateurs 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 des bibliothèques OpenGL et des en-têtes installés. La plupart des distributions Linux n'installent pas toutes ces fonctionnalités par défaut, mais la configuration d'un environnement de développement reste simple.

Utilisez les commandes suivantes pour installer la configuration de base requise pour créer des applications Qt:

Sudo apt-get install build-essential libgl1-mesa-dev
17
Habibillah