编译OpenGL程序(缺少GL / gl.h)


51

我是一个完整的Linux / Ubuntu新手,对于这个问题的任何愚蠢之处或后续问题,我深表歉意。

我正在尝试将软件工程班的小组编写的程序写到我的家用计算机上。在学校里,我们有Linux,它将在那编译并运行良好。我下载了VMWare,在虚拟机上安装了Ubuntu,现在正试图打开我的程序。

每当我尝试运行我的make文件时,都会收到一条错误消息,内容为

gcc -I../include -pthread -O1 -c rain.c
In file included from rain.c:19:0:
../include/GL/glfw.h:176:21: fatal error: GL/gl.h: No such file or directory
compilation terminated.
make: *** [rain.o] Error 1

在我的学校计算机上可以找到该文件时,有人会碰巧知道为什么为什么找不到该文件吗?我需要做什么来下载它或将它放在正确的位置?

Answers:


83

我猜你没有提供gl.h的开发包。apt-file是要使用的命令行工具。

首先,确保它是最新的:

apt-file update

现在,您可以编写搜索来回答“哪些软件包提供了gl.h文件?”

apt-file search "gl.h"

我现在没有要检查的ubuntu框,但我想结果将是像mesa-dev或opengl-dev之类的。

一旦您知道哪个软件包提供了“ gl.h”,(让我们假装apt-file的结果是“ libmesa-dev”),请安装它:

apt-get install libmesa-dev

有关apt系列命令的更多信息:https : //help.ubuntu.com/community/AptGet/Howto


谢谢您的帮助。我尝试了您的建议,并使用搜索的输出更新了原始帖子。
2013年

决定只是试用一下,并下载了mesa-common-dev软件包。然后,我设法导航到usr / include / GL文件夹,发现它在那里。我刚将其复制/粘贴到项目文件夹中,就可以正常工作了。但是后来我的项目给出了一个错误,它需要一个“ glu.h”文件夹,因此我下载了libcgal-dev软件包,并对复制/粘贴做了同样的事情。将其放入正确的文件夹中并运行make命令后,项目将编译并运行。因此,非常感谢您的帮助。现在,我只需要使图形变慢。:)
Seldom 2013年

很高兴您可以进行构建!您的复制/粘贴是快速而又肮脏的,但是正确的说,您的包含可能是错误的。我不太了解c ++,但是从源代码编译某些软件包时遇到了类似的问题。解决方案iirc就像更改#include <gl.h>#include<gl/gl.h>
djeikyb

21
哦,伙计,非常感谢您教我钓鱼,而不仅仅是给我包装的名称!
Brian Cain

2
感谢您对apt-file的信息。关于GL / gl.h所需的软件包,它是:(mesa-common-dev 至少是Ubuntu 16.04)
ElazarR

36

对于GL/gl.h使用:

sudo apt install mesa-common-dev

您可能还会发现这些帮助,例如GL/glu.h

sudo apt install libglu1-mesa-dev freeglut3-dev

您可能还想包括libglfw3-dev libgles2-mesa-dev
rustyx

1

您还可以从源代码构建glproto(链接),libdrm(链接),然后构建mesa(链接)。尽管许多其他软件包可能都包含此头文件,但重要的是转到源代码。这将减少安装的内存占用,并确保您具有最新和/或最高版本。

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.