Compiler le programme OpenGL (manquant GL / gl.h)

50

Je suis un noob complet sous Linux / Ubuntu, alors je m'excuse pour toute partie stupide de cette question ou pour les suivantes.

J'essaie d'obtenir un programme que le groupe de ma classe de génie logiciel a écrit sur mon ordinateur personnel. À l’école, nous avons Linux, qui compilera et fonctionnera bien là-bas. J'ai téléchargé VMWare, installé Ubuntu sur une machine virtuelle et j'essaie maintenant de faire ouvrir mon programme.

Cependant, chaque fois que j’essaie d’exécuter mon fichier make, j’obtiens une erreur disant

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

Quelqu'un pourrait-il savoir pourquoi il ne peut pas trouver ce fichier, alors qu'il le peut sur les ordinateurs de mon école? Et que devrais-je faire pour le télécharger ou le placer au bon endroit?

Rarement
la source

Réponses:

84

J'imagine que vous n'avez pas les paquets de développement fournis par gl.h. apt-fileest l'outil de ligne de commande à utiliser.

Tout d'abord, assurez-vous qu'il est à jour:

apt-file update

Vous pouvez maintenant écrire une recherche pour répondre à "quel paquet fournit le fichier gl.h?"

apt-file search "gl.h"

Je n'ai pas de case ubuntu à vérifier pour l'instant, mais je suppose que le résultat sera quelque chose comme mesa-dev ou opengl-dev.

Une fois que vous savez quel paquet fournit "gl.h" (supposons que le résultat de apt-file soit "libmesa-dev"), installez-le:

apt-get install libmesa-dev

Plus d'informations sur la famille de commandes apt: https://help.ubuntu.com/community/AptGet/Howto

djeikyb
la source
Merci pour l'aide. J'ai essayé ce que vous avez suggéré et mis à jour le message original avec le résultat de la recherche.
Rarement
Décidé de jouer avec elle et téléchargé le paquet mesa-common-dev. Ensuite, j'ai réussi à naviguer dans le dossier usr / include / GL et j'ai découvert qu'il s'y trouvait. Je me suis déplacé juste copié / collé dans le dossier de mon projet et cela a semblé fonctionner. Mais ensuite, mon projet indiquait une erreur selon laquelle il lui fallait un dossier "glu.h". J'ai donc téléchargé le paquet libcgal-dev et procédé de la même manière avec le copier / coller. Après avoir placé cela dans le bon dossier et exécuté la commande make, le projet est compilé et exécuté. Merci beaucoup pour votre aide. Maintenant, j'ai juste besoin de ralentir les graphiques. :)
Rarement
Heureux que vous ayez la construction au travail! Votre copier / coller est rapide et sale, mais correctement, votre inclusion peut être erronée. Je ne connais pas beaucoup c ++, mais j'ai eu un problème similaire lors de la compilation d'un paquet à partir du source. Solution, IIRC, était comme le changement #include <gl.h>de #include<gl/gl.h>.
djeikyb
21
Oh, merci beaucoup de m'avoir appris à pêcher au lieu de me donner le nom du paquet!
Brian Cain
2
Merci pour l'info sur apt-file. En ce qui concerne le package requis pour GL / gl.h, il est: mesa-common-dev (au moins pour Ubuntu 16.04)
ElazarR
37

Pour GL/gl.hutilisation:

sudo apt install mesa-common-dev

Vous pouvez également trouver ces informations utiles, par exemple GL/glu.h:

sudo apt install libglu1-mesa-dev freeglut3-dev
Richard
la source
Vous pourriez également vouloir inclurelibglfw3-dev libgles2-mesa-dev
rustyx
1

Vous pouvez également construire glproto ( lien ), libdrm ( lien ), puis mesa ( lien ) à partir de la source. Bien que de nombreux autres packages puissent contenir ce fichier d’en-tête, il est important d’aller à la source. Cela réduira l'encombrement de la mémoire de vos installations et garantira que vous disposez de la dernière version et / ou de la meilleure version.

Adam Erickson
la source