Скомпилировать программу OpenGL (отсутствует GL / gl.h)

50

Я полный Linux / Ubuntu noob, поэтому я прошу прощения за любые глупые части этого вопроса или последующие.

Я пытаюсь получить программу, которую группа моего программиста написала на мой домашний компьютер. В школе у ​​нас есть Linux, и он будет хорошо скомпилироваться и работать там. Я скачал VMWare, установил Ubuntu на виртуальную машину и теперь пытаюсь открыть мою программу.

Однако, когда я пытаюсь запустить файл make, я получаю сообщение об ошибке

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

Кто-нибудь случайно узнает, почему он не может найти этот файл, когда он может на моих школьных компьютерах? И что мне нужно сделать, чтобы загрузить его или получить в нужном месте?

Редко
источник

Ответы:

84

Я предполагаю, что у вас нет каких-либо пакетов разработчика, предоставляющих gl.h. apt-fileинструмент командной строки для использования

Во-первых, убедитесь, что это актуально:

apt-file update

Теперь вы можете написать запрос для ответа "какой пакет предоставляет файл gl.h?"

apt-file search "gl.h"

У меня сейчас нет коробки с Ubuntu для проверки, но я думаю, что результатом будет что-то вроде mesa-dev или opengl-dev.

Как только вы узнаете, какой пакет предоставляет «gl.h» (давайте представим, что результатом из apt-файла является «libmesa-dev»), установите его:

apt-get install libmesa-dev

Больше информации о семействе команд apt: https://help.ubuntu.com/community/AptGet/Howto

djeikyb
источник
Спасибо за помощь. Я попробовал то, что вы предложили, и обновил исходное сообщение с выводом поиска.
Редко
Решил просто поиграть с ним и скачал пакет mesa-common-dev. Затем мне удалось перейти к папке usr / include / GL и обнаружил, что она там есть. Я переместил только что скопировал / вставил его в папку моего проекта, и это, казалось, работает. Но потом мой проект выдавал ошибку, что ему нужна папка "glu.h", поэтому я скачал пакет libcgal-dev и сделал то же самое с копией / вставкой. После помещения этого файла в правильную папку и запуска команды make проект компилируется и запускается. Так что большое спасибо за помощь. Теперь мне просто нужно замедлить графику. :)
Редко
Рад, что вы получили сборку на работу! Ваша копия / вставка быстрая и грязная, но, возможно, ваши включения могут быть ошибочными. Я не очень хорошо знаю c ++, но у меня была похожая проблема при компиляции пакета из исходного кода. Решение, IIRC, было похоже на изменение #include <gl.h>в #include<gl/gl.h>.
djikyb
21
О, чувак, большое спасибо за то, что научил меня ловить рыбу, а не просто дал мне название пакета!
Брайан Кейн
2
Спасибо за информацию по apt-файлу. Что касается требуемого пакета для GL / gl.h, это: mesa-common-dev (по крайней мере, для Ubuntu 16.04)
ElazarR
37

Для GL/gl.hиспользования:

sudo apt install mesa-common-dev

Вы также можете найти это полезным, например, для GL/glu.h:

sudo apt install libglu1-mesa-dev freeglut3-dev
Ричард
источник
Вы также можете включитьlibglfw3-dev libgles2-mesa-dev
rustyx
1

Вы также можете собрать glproto ( ссылка ), libdrm ( ссылка ), а затем mesa ( ссылка ) из источника. Хотя многие другие пакеты могут содержать этот заголовочный файл, важно перейти к исходному коду. Это уменьшит объем используемой памяти и обеспечит наличие последней и / или лучшей версии.

Адам Эриксон
источник