Qt non riesce a trovare GL / gl.h ma esiste libGL.so


13

Sto eseguendo Ubuntu 14.04 a 64 bit.

L'errore di compilazione che sto ottenendo è:

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

Stranamente, sembra che libGL.so sia installato e collegato in modo corretto alle librerie OpenGL installate dal mio driver di visualizzazione Nvidia 343 (che presumo installa anche i driver 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

Ho visto alcuni post precedenti che suggeriscono di farlo

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

ma quando l'ho provato, ho declassato la mia versione OpenGL supportata (come fornita da glxinfo) alla v1.4. Inoltre non sono sicuro del motivo per cui ciò dovrebbe aiutare.

Ecco il mio output di 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:

Grazie


1
Le librerie e i file di intestazione sono cose diverse: il tuo sistema ha il mesa-common-devpacchetto installato?
steeldriver,

Risposte:


19

Per quanto riguarda il documento Qt :

I programmi di installazione Qt per Linux presumono che un compilatore C ++, un debugger, un make e altri strumenti di sviluppo siano forniti dal sistema operativo host. Inoltre, la creazione di applicazioni grafiche Qt richiede l'installazione di librerie e intestazioni OpenGL. La maggior parte delle distribuzioni Linux non installa tutti questi per impostazione predefinita, ma la configurazione di un ambiente di sviluppo è ancora semplice.

Utilizzare i seguenti comandi per installare i requisiti di base per la creazione di applicazioni Qt:

sudo apt-get install build-essential libgl1-mesa-dev

perché? Che cosa ti aiuterà?
Tim

Se leggi il documento che ho indicato sopra, conoscerai il motivo
Habibillah,

17

Ah, come sottolinea @steeldriver, le intestazioni e le librerie sono cose diverse, e facendo quanto segue risolto il problema:

sudo apt-get install mesa-common-dev

Ciò installa le intestazioni richieste.


Il fatto divertente è che GL/gl.hviene spedito con Qt, se si installa WebEngine, sottoqtwebengine/src/3rdparty/chromium/third_party/mesa/src/include/GL/gl.h
Marco Sulla
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.