OpenGL-Programm kompilieren (fehlende GL / gl.h)

51

Ich bin ein kompletter Linux / Ubuntu-Neuling, also entschuldige ich mich für irgendwelche dummen Teile dieser Frage oder folge denen.

Ich versuche, ein Programm zu bekommen, das die Gruppe meiner Softwareentwicklungsklasse auf meinen Heimcomputer geschrieben hat. In der Schule haben wir Linux, und es wird dort gut kompiliert und ausgeführt. Ich habe VMWare heruntergeladen, Ubuntu auf einer virtuellen Maschine installiert und versuche nun, mein Programm zum Öffnen zu bringen.

Wann immer ich jedoch versuche, meine make-Datei auszuführen, erhalte ich die Fehlermeldung

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

Würde jemand zufällig wissen, warum diese Datei nicht gefunden werden kann, wenn dies auf meinen Schulcomputern möglich ist? Und was muss ich tun, um es herunterzuladen oder an die richtige Stelle zu bringen?

Selten
quelle

Antworten:

83

Ich vermute, Sie haben nicht das, was für ein Entwicklerpaket gl.h zur Verfügung stellt. apt-fileist das zu verwendende Befehlszeilentool.

Stellen Sie zunächst sicher, dass es auf dem neuesten Stand ist:

apt-file update

Jetzt können Sie eine Suche schreiben, um zu antworten: "Welches Paket enthält die Datei gl.h?"

apt-file search "gl.h"

Ich habe gerade keine Ubuntu-Box zum Überprüfen, aber ich schätze, das Ergebnis wird so etwas wie Mesa-Dev oder Opengl-Dev sein.

Sobald Sie wissen, welches Paket "gl.h" bereitstellt (geben wir als Ergebnis von apt-file "libmesa-dev" vor), installieren Sie es:

apt-get install libmesa-dev

Weitere Informationen zur Befehlsfamilie von apt: https://help.ubuntu.com/community/AptGet/Howto

djeikyb
quelle
Danke für die Hilfe. Ich habe versucht, was Sie vorgeschlagen und den ursprünglichen Beitrag mit der Ausgabe der Suche aktualisiert.
Selten am
Beschlossen, nur herumzuspielen und lud das mesa-common-dev-Paket. Dann konnte ich zum Ordner usr / include / GL navigieren und stellte fest, dass er dort war. Ich habe es einfach kopiert / in den Ordner meines Projekts eingefügt und es schien zu funktionieren. Aber dann gab mein Projekt einen Fehler aus, dass es einen "glu.h" -Ordner benötigte, also lud ich das libcgal-dev-Paket herunter und tat dasselbe mit dem Kopieren / Einfügen. Nachdem Sie dies im richtigen Ordner abgelegt und den Befehl make ausgeführt haben, wird das Projekt kompiliert und ausgeführt. Vielen Dank für die Hilfe. Jetzt muss ich nur noch die Grafik verlangsamen. :)
Selten am
Ich bin froh, dass du den Build zum Laufen gebracht hast! Ihr Kopieren / Einfügen ist schnell und schmutzig, aber richtig, Ihre Includes könnten falsch sein. Ich kenne nicht viel C ++, hatte aber ein ähnliches Problem beim Kompilieren eines Pakets aus dem Quellcode. Die Lösung, iirc, war wie ein Wechsel #include <gl.h>zu #include<gl/gl.h>.
Dienstag,
21
Oh Mann, vielen Dank, dass du mir das Angeln beigebracht hast, anstatt mir nur den Namen des Pakets zu geben!
Brian Cain
2
Danke für die Info zu apt-file. Für das erforderliche Paket für GL / gl.h gilt Folgendes: mesa-common-dev (zumindest für Ubuntu 16.04)
ElazarR,
36

Zur GL/gl.hVerwendung:

sudo apt install mesa-common-dev

Sie können auch diese hilfreich finden, zum Beispiel GL/glu.h:

sudo apt install libglu1-mesa-dev freeglut3-dev
Richard
quelle
Vielleicht möchten Sie auchlibglfw3-dev libgles2-mesa-dev
rustyx
1

Sie können auch glproto ( link ), libdrm ( link ) und dann mesa ( link ) aus dem Quellcode erstellen . Während viele andere Pakete diese Header-Datei enthalten können, ist es wichtig, zur Quelle zu wechseln. Dies verringert den Speicherbedarf Ihrer Installationen und stellt sicher, dass Sie über die neueste und / oder beste Version verfügen.

Adam Erickson
quelle