Qt nie może znaleźć GL / gl.h, ale libGL.so istnieje

13

Korzystam z 64-bitowego systemu Ubuntu 14.04.

Występuje błąd kompilacji:

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

O dziwo, wydaje mi się, że mam poprawnie zainstalowaną bibliotekę libGL.so i dowiązanie symboliczne do bibliotek OpenGL zainstalowanych przez mój sterownik ekranu Nvidia 343 (który, jak zakładam, również instaluje sterowniki 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

Widziałem kilka poprzednich postów, które sugerują robienie

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

ale kiedy spróbowałem, obniżyłem moją obsługiwaną wersję OpenGL (wyprowadzoną przez glxinfo) do wersji 1.4. Nie jestem też pewien, dlaczego to ma pomóc.

Oto moje wyjście 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:

Dzięki

Ejang
źródło
1
Biblioteki i pliki nagłówkowe to różne rzeczy: czy Twój system ma mesa-common-devzainstalowany pakiet?
steeldriver 15.01.2015

Odpowiedzi:

19

W odniesieniu do dokumentu Qt :

Instalatory Qt dla systemu Linux zakładają, że kompilator, debugger, make i inne narzędzia programistyczne C ++ są dostarczane przez system operacyjny hosta. Ponadto budowanie graficznych aplikacji Qt wymaga zainstalowanych bibliotek OpenGL i nagłówków. Większość dystrybucji Linuksa domyślnie nie instaluje wszystkich, ale skonfigurowanie środowiska programistycznego jest nadal proste.

Użyj następujących poleceń, aby zainstalować podstawowe wymagania dotyczące budowania aplikacji Qt:

sudo apt-get install build-essential libgl1-mesa-dev
Habibillah
źródło
dlaczego? W czym to pomoże?
Tim
Jeśli przeczytasz dokument, który
wskazałem
17

Ach, jak wskazuje @steeldriver, nagłówki i biblioteki to różne rzeczy, a wykonanie następujących czynności naprawiło problem:

sudo apt-get install mesa-common-dev

Spowoduje to zainstalowanie wymaganych nagłówków.

Ejang
źródło
Zabawne jest to, że GL/gl.hjest dostarczany z Qt, jeśli zainstalujesz WebEngine, podqtwebengine/src/3rdparty/chromium/third_party/mesa/src/include/GL/gl.h
Marco Sulla