Я скачал этот пример проекта и сам возился с ним. Похоже, что он не содержит никакого специфического для OSX кода; просто его Makefile был написан только для OSX.
Сначала убедитесь, что у вас установлены пакеты libglfw3-dev
и libglew-dev
. Установка их из диспетчера пакетов Ubuntu должна автоматически включить все остальные необходимые библиотеки.
Затем измените строку LIBS
файла Makefile на
LIBS = -lGLEW -lglfw -lGL -lm
Без видимой причины библиотека с именем libglew
в OSX называется libGLEW
в Linux (стиль Debian), а библиотека с именем libglfw3
в OSX называется libglfw
в Linux. -lGL
является Linux-эквивалентом -framework OpenGL
, а -lm
содержит математическую библиотеку (необходима для одного вызова sqrt
), которая отделена от базовой библиотеки C в Linux, но не в OSX, если я помню правильно.
Вам также может понадобиться отрегулировать линию FLAGS. Этот параметр работал для меня:
FLAGS = -g -O2 -std=gnu99 -Wall -Wextra -Wpedantic
Важное изменение здесь -std=gnu99
вместо -std=c99
. Более строгий режим C99 является проблематичным; он отключает расширения, которые люди не понимают, являются расширениями, например math.h
, определяющими константу M_PI
, которую хочет эта программа. (У этого также есть неприятная привычка ломать связанные с сетью заголовки системы, по причинам, которые слишком сложны, чтобы проникнуть сюда. К счастью, эта программа не использует сеть.)
Я также добавил -Wall -Wextra -Wpedantic
, добавил -g
и изменил -O3
на -O2
. Это все, что я обычно делаю с каждой программой на С, с которой я работаю. Первые два могут выявить проблемы, и они почти никогда не болят; в этом случае они не имели никакой видимой разницы. Третье потому, что -O3
часто делает вашу программу на медленнее , чем -O2
будет .