Qt no puede encontrar GL / gl.h pero libGL.so existe

13

Estoy ejecutando Ubuntu 14.04 de 64 bits.

El error de compilación que obtengo es:

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

Por extraño que parezca, parece que libGL.so está correctamente instalado y vinculado a las bibliotecas OpenGL instaladas por mi controlador de pantalla Nvidia 343 (que supongo que también instala controladores 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

He visto algunas publicaciones anteriores que sugieren hacer

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

pero cuando lo intenté, bajó mi versión de OpenGL compatible (tal como la produjo glxinfo) a v1.4. Además, no estoy seguro de por qué se supone que eso ayuda.

Aquí está mi salida de 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:

Gracias

ejang
fuente
1
Las bibliotecas y los archivos de encabezado son cosas diferentes: ¿tiene el mesa-common-devsistema instalado el paquete?
steeldriver

Respuestas:

19

En cuanto a Qt doc :

Los instaladores de Qt para Linux asumen que el sistema operativo del host proporciona un compilador, depurador, marca y otras herramientas de desarrollo de C ++. Además, la creación de aplicaciones gráficas Qt requiere la instalación de bibliotecas y encabezados OpenGL. La mayoría de las distribuciones de Linux no instalan todo esto de manera predeterminada, pero configurar un entorno de desarrollo sigue siendo sencillo.

Use los siguientes comandos para instalar los requisitos básicos para crear aplicaciones Qt:

sudo apt-get install build-essential libgl1-mesa-dev
Habibillah
fuente
¿por qué? ¿Con qué ayudará esto?
Tim
Si lees el documento que
indico
17

Ah, como señala @steeldriver, los encabezados y las bibliotecas son cosas diferentes, y hacer lo siguiente solucionó el problema:

sudo apt-get install mesa-common-dev

Esto instala los encabezados necesarios.

ejang
fuente
El hecho divertido es que GL/gl.hse envía con Qt, si instala WebEngine, bajoqtwebengine/src/3rdparty/chromium/third_party/mesa/src/include/GL/gl.h
Marco Sulla