Compile el programa OpenGL (falta GL / gl.h)

50

Soy un novato completo de Linux / Ubuntu, así que me disculpo por cualquier parte tonta de esta pregunta o seguimiento.

Estoy tratando de obtener un programa que el grupo de mi clase de ingeniería de software escribió en la computadora de mi casa. En la escuela, tenemos Linux, y se compilará y funcionará bien allí. Descargué VMWare, instalé Ubuntu en una máquina virtual y ahora estoy tratando de abrir mi programa.

Sin embargo, cuando intento ejecutar mi archivo make, aparece un error que dice

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

¿Alguien sabría por qué no puede encontrar este archivo, cuando puede en las computadoras de mi escuela? ¿Y qué necesito hacer para descargarlo o colocarlo en el lugar correcto?

Raramente
fuente

Respuestas:

84

Supongo que no tienes los paquetes de desarrollo que proporcionan gl.h. apt-filees la herramienta de línea de comando para usar.

Primero, asegúrese de que esté actualizado:

apt-file update

Ahora puede escribir una búsqueda para responder "¿qué paquete proporciona el archivo gl.h?"

apt-file search "gl.h"

No tengo una caja de ubuntu ahora para verificar, pero supongo que el resultado será algo como mesa-dev u opengl-dev.

Una vez que sepa qué paquete proporciona "gl.h", (supongamos que el resultado del archivo apt es "libmesa-dev"), instálelo:

apt-get install libmesa-dev

Más información sobre la familia de comandos de apt: https://help.ubuntu.com/community/AptGet/Howto

djeikyb
fuente
Gracias por la ayuda. Intenté lo que sugeriste y actualicé la publicación original con el resultado de la búsqueda.
Rara vez el
Decidí jugar con él y descargué el paquete mesa-common-dev. Luego logré navegar a la carpeta usr / include / GL y descubrí que estaba allí. Lo moví solo lo copié / pegué en la carpeta de mi proyecto y pareció funcionar. Pero entonces mi proyecto estaba dando un error de que necesitaba una carpeta "glu.h", así que descargué el paquete libcgal-dev e hice lo mismo con copiar / pegar. Después de poner eso en la carpeta correcta y ejecutar el comando make, el proyecto se compila y se ejecutará. Muchas gracias por la ayuda. Ahora solo necesito que los gráficos disminuyan. :)
Rara vez el
¡Me alegra que hayas hecho funcionar la construcción! Su copiar / pegar es rápido y sucio, pero correctamente, sus inclusiones pueden estar equivocadas. No sé mucho sobre C ++, pero tuve un problema similar al compilar algunos paquetes desde la fuente. La solución, iirc, fue como cambiar #include <gl.h>a #include<gl/gl.h>.
djeikyb
21
¡Oh, hombre, muchas gracias por enseñarme a pescar en lugar de solo darme el nombre del paquete!
Brian Cain
2
Gracias por la información sobre apt-file. Con respecto al paquete requerido para GL / gl.h, es: mesa-common-dev (al menos para Ubuntu 16.04)
ElazarR
37

Para el GL/gl.huso:

sudo apt install mesa-common-dev

También puede encontrar estos útiles, por ejemplo GL/glu.h:

sudo apt install libglu1-mesa-dev freeglut3-dev
Ricardo
fuente
También es posible que desee incluirlibglfw3-dev libgles2-mesa-dev
rustyx
1

También puede construir glproto ( enlace ), libdrm ( enlace ) y luego mesa ( enlace ) desde la fuente. Si bien muchos otros paquetes pueden contener este archivo de encabezado, es importante ir a la fuente. Esto reducirá la huella de memoria de sus instalaciones y asegurará que tenga la última y / o mejor versión.

Adam Erickson
fuente