Compilare il programma OpenGL (GL / gl.h mancante)


50

Sono un noob completo Linux / Ubuntu, quindi mi scuso per eventuali parti stupide di questa domanda o follow-up.

Sto cercando di ottenere un programma che il gruppo della mia classe di ingegneria del software ha scritto sul mio computer di casa. A scuola, abbiamo Linux, che verrà compilato e funzionerà benissimo lì. Ho scaricato VMWare, ho installato Ubuntu su una macchina virtuale e ora sto cercando di aprire il mio programma.

Ogni volta che provo a eseguire il mio file make, tuttavia, viene visualizzato un errore che 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

Qualcuno potrebbe sapere perché non riesce a trovare questo file, quando può sui miei computer della scuola? E cosa dovrei fare per scaricarlo o farlo nel posto giusto?

Risposte:


84

Immagino che tu non abbia qualsiasi pacchetto di sviluppo che fornisca gl.h. apt-fileè lo strumento da riga di comando da usare.

Innanzitutto, assicurati che sia aggiornato:

apt-file update

Ora puoi scrivere una ricerca per rispondere "quale pacchetto fornisce il file gl.h?"

apt-file search "gl.h"

Al momento non ho una scatola di Ubuntu da controllare, ma immagino che il risultato sarà qualcosa come mesa-dev o opengl-dev.

Una volta che sai quale pacchetto fornisce "gl.h", (facciamo finta che il risultato di apt-file sia "libmesa-dev"), installalo:

apt-get install libmesa-dev

Maggiori informazioni sulla famiglia di comandi apt: https://help.ubuntu.com/community/AptGet/Howto


Grazie per l'aiuto. Ho provato quello che hai suggerito e aggiornato il post originale con l'output della ricerca.
rado l'

Ha deciso di giocarci e ha scaricato il pacchetto mesa-common-dev. Quindi sono riuscito a navigare nella cartella usr / include / GL e ho scoperto che era lì. Ho spostato appena copiato / incollato nella cartella del mio progetto e sembrava funzionare. Ma poi il mio progetto stava dando un errore che aveva bisogno di una cartella "glu.h", quindi ho scaricato il pacchetto libcgal-dev e ho fatto la stessa cosa con il copia / incolla. Dopo averlo inserito nella cartella corretta ed eseguito il comando make, il progetto viene compilato e verrà eseguito. Quindi grazie mille per l'aiuto. Ora devo solo rallentare la grafica. :)
rado l'

Sono contento che tu abbia fatto funzionare la build! Il tuo copia / incolla è veloce e sporco, ma correttamente, le tue inclusioni potrebbero essere sbagliate. Non conosco molto c ++, ma ho avuto un problema simile durante la compilazione di alcuni pacchetti dal sorgente. Soluzione, iirc, era come cambiare #include <gl.h>in #include<gl/gl.h>.
djeikyb,

21
Oh, amico, grazie mille per avermi insegnato a pescare invece di darmi solo il nome del pacco!
Brian Cain,

2
Grazie per le informazioni sul file apt. Per quanto riguarda il pacchetto richiesto per GL / gl.h, è: mesa-common-dev (almeno per Ubuntu 16.04)
ElazarR

37

Per l' GL/gl.huso:

sudo apt install mesa-common-dev

Potresti trovare utili anche questi, per esempio GL/glu.h:

sudo apt install libglu1-mesa-dev freeglut3-dev

Potresti anche voler includerelibglfw3-dev libgles2-mesa-dev
rustyx

1

Puoi anche creare glproto ( link ), libdrm ( link ) e quindi mesa ( link ) dal sorgente. Mentre molti altri pacchetti possono contenere questo file di intestazione, è importante andare al sorgente. Ciò ridurrà il footprint di memoria delle installazioni e assicurerà di disporre della versione più recente e / o migliore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.