Skompiluj program OpenGL (Missing GL / gl.h)

51

Jestem kompletnym Linuxem / Ubuntu noob, więc przepraszam za wszelkie głupie fragmenty tego pytania lub kolejne.

Usiłuję uzyskać program, który grupa mojej klasy inżynierii oprogramowania napisała na moim komputerze domowym. W szkole mamy Linuksa, który się tam skompiluje i będzie działał dobrze. Pobrałem VMWare, zainstalowałem Ubuntu na maszynie wirtualnej i teraz próbuję uruchomić mój program.

Kiedy jednak próbuję uruchomić plik make, pojawia się komunikat o błędzie

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

Czy ktoś zda sobie sprawę, dlaczego nie może znaleźć tego pliku, skoro może na moich szkolnych komputerach? A co powinienem zrobić, aby go pobrać lub umieścić we właściwym miejscu?

Rzadko
źródło

Odpowiedzi:

83

Domyślam się, że nie masz żadnych pakietów deweloperskich zapewniających gl.h. apt-fileto narzędzie wiersza poleceń, którego należy użyć.

Najpierw upewnij się, że jest aktualny:

apt-file update

Teraz możesz napisać zapytanie, aby odpowiedzieć „jaki pakiet zawiera plik gl.h?”

apt-file search "gl.h"

Nie mam teraz pola ubuntu do sprawdzenia, ale zgaduję, że wynikiem będzie coś takiego jak mesa-dev lub opengl-dev.

Kiedy wiesz, jaki pakiet zawiera „gl.h”, (udajmy, że wynikiem pliku apt jest „libmesa-dev”), zainstaluj go:

apt-get install libmesa-dev

Więcej informacji na temat rodziny poleceń apt: https://help.ubuntu.com/community/AptGet/Howto

djeikyb
źródło
Dzięki za pomoc. Próbowałem tego, co zasugerowałeś, i zaktualizowałem oryginalny post z wynikami wyszukiwania.
Seldom
Postanowiłem po prostu się z tym pobawić i pobrałem pakiet mesa-common-dev. Potem udało mi się przejść do folderu usr / include / GL i znalazłem, że tam był. Właśnie przeniosłem / wkleiłem go do folderu mojego projektu i wyglądało na to, że działa. Ale potem mój projekt dawał błąd, że potrzebuje folderu „glu.h”, więc pobrałem pakiet libcgal-dev i zrobiłem to samo z kopiowaniem / wklejaniem. Po umieszczeniu tego w odpowiednim folderze i uruchomieniu polecenia make projekt kompiluje się i uruchomi. Dziękuję bardzo za pomoc. Teraz muszę tylko spowolnić grafikę. :)
Seldom
Cieszę się, że kompilacja działa! Twoja kopia / wklejanie jest szybka i brudna, ale właściwie twoje załączniki mogą być błędne. Nie znam dużo c ++, ale miałem podobny problem z kompilacją jakiegoś pakietu ze źródła. Rozwiązanie, iirc, przypominało zmianę #include <gl.h>na #include<gl/gl.h>.
djeikyb
21
Och, człowieku, dziękuję bardzo za nauczenie mnie łowienia zamiast podania nazwy pakietu!
Brian Cain
2
Dzięki za informacje o apt-file. Jeśli chodzi o wymagany pakiet dla GL / gl.h, jest to: mesa-common-dev (przynajmniej dla Ubuntu 16.04)
ElazarR
36

Do GL/gl.hużytku:

sudo apt install mesa-common-dev

Mogą być również pomocne, na przykład GL/glu.h:

sudo apt install libglu1-mesa-dev freeglut3-dev
Richard
źródło
Możesz także dołączyćlibglfw3-dev libgles2-mesa-dev
rustyx
1

Możesz także zbudować glproto ( link ), libdrm ( link ), a następnie mesa ( link ) ze źródła. Chociaż wiele innych pakietów może zawierać ten plik nagłówka, ważne jest, aby przejść do źródła. Spowoduje to zmniejszenie zajmowanej pamięci w instalacjach i zapewni najnowszą i / lub najlepszą wersję.

Adam Erickson
źródło