![Qt 找不到 GL/gl.h 但 libGL.so 存在](https://linux22.com/image/867097/Qt%20%E6%89%BE%E4%B8%8D%E5%88%B0%20GL%2Fgl.h%20%E4%BD%86%20libGL.so%20%E5%AD%98%E5%9C%A8.png)
我正在运行 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
关于Qt 文档:
Linux 版 Qt 安装程序假定主机操作系统提供了 C++ 编译器、调试器、make 和其他开发工具。此外,构建图形 Qt 应用程序需要安装 OpenGL 库和头文件。大多数 Linux 发行版默认不会安装所有这些,但设置开发环境仍然很简单。
使用以下命令安装构建 Qt 应用程序的基本要求:
sudo apt-get install build-essential libgl1-mesa-dev
答案2
啊,正如 @steeldriver 指出的那样,标题和库是不同的东西,执行以下操作可以解决问题:
sudo apt-get install mesa-common-dev
这将安装所需的标题。