Qt找不到GL / gl.h但libGL.so存在


13

我正在运行64位Ubuntu 14.04。

我得到的编译错误是:

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

奇怪的是,我似乎已经正确安装了libGL.so并将其符号链接到我的Nvidia 343显示驱动程序(我想还安装了OpenGL驱动程序)所安装的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

我以前看过一些建议做的事

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

但是当我尝试这样做时,它将我支持的OpenGL版本(由glxinfo输出)降级为v1.4。我也不确定为什么应该有所帮助。

这是我的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:

谢谢


1
库和头文件是不同的东西:您的系统是否已mesa-common-dev安装软件包?
steeldriver

Answers:


19

关于Qt doc

用于Linux的Qt安装程序假定主机操作系统提供了C ++编译器,调试器,make和其他开发工具。此外,构建图形化Qt应用程序需要安装OpenGL库和标头。大多数Linux发行版默认都不会安装所有这些,但是设置开发环境仍然很简单。

使用以下命令来安装构建Qt应用程序的基本要求:

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

为什么?这将有什么帮助?
蒂姆(Tim)

如果您阅读了我上面指出的文档,您将会知道原因
Habibillah 2015年

17

嗯,正如@steeldriver指出的那样,标头和库是不同的东西,并且通过以下操作解决了该问题:

sudo apt-get install mesa-common-dev

这将安装所需的标题。


有趣的事实是GL/gl.h,如果您安装WebEngine,则Qt附带了该软件qtwebengine/src/3rdparty/chromium/third_party/mesa/src/include/GL/gl.h
Marco Sulla
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.